есть подключение к сети провайдера, по умолчанию есть только сеть, после поднятия vpn появляется инет.
нужно выпускать людей после роутера занесённых в таблицу 2 и резать им канал в интернет, но не резать скорость в сети провайдера
толком понять не могу как шейпить с учётом того что поднято 2 ната (сеть пров-а и инет)
вот примерный набросок фаера
Код: Выделить всё
fw="/sbin/ipfw -q" # где лежит ipfw
inif="xl0" # Внутренний сетевой интерфейс
inip="192.168.100.1" # Локальный IP адрес сервера
innet="192.168.100.0/24" # Адресация локальной сети
outifb="rl0" # Внешний сетевой интерфейс ДО VPN
outipb="x.x.x.x" # Внешний IP адрес ДО VPN
natportb="8668" # порт natd для сети
outifa="ng0" # Внешний сетевой интерфейс ПОСЛЕ VPN
outipa="y.y.y.y" # Внешний IP адрес
natporta="8669" # порт natd для инета
# Сброс всех правил
${fw} -f flush
${fw} -f pipe flush
${fw} -f queue flush
# - кому разрешен выход в интернет
${fw} -f table 2 flush
${fw} table 2 add 192.168.100.200 32
# ограничение скорости
${fw} pipe 32 config bw 32Kbit/s queue 100 mask dst-ip 0xffff
# чтоб правильно работали пайпы и диверт
${fw} disable one_pass
##### Установки для localhost'а ####
${fw} add allow all from any to any via lo0
${fw} add deny log all from any to 127.0.0.0/8
${fw} add deny log all from 127.0.0.0/8 to any
# тут ещё всякие запрещающие правила
##### NAT #####
# для заворота сети провайдера
${fw} add pipe tablearg ip from me to not ${innet} in via ${outifb}
${fw} add divert ${natportb} ip from 'table(2)' to not ${innet} out via ${outifb}
${fw} add divert ${natportb} ip from any to ${outipb} in via ${outifb}
${fw} add pipe tablearg ip from not ${innet} to 'table(2)' out via ${outifb}
# для заворота инета
${fw} add pipe tablearg ip from me to not ${innet} in via ${outifa}
${fw} add divert ${natporta} ip from 'table(2)' to not ${innet} out via ${outifa}
${fw} add divert ${natporta} ip from any to ${outipa} in via ${outifa}
${fw} add pipe tablearg ip from not ${innet} to 'table(2)' out via ${outifa}
${fw} add check-state
# Разрешаем первым делом все уже установленные соединения
${fw} add allow tcp from any to any established
# Разрешаем нашему серверу устанавливать tcp соединения в любом направлении
${fw} add allow tcp from ${outipb} to any out xmit ${outifb} setup
${fw} add allow tcp from ${outipa} to any out xmit ${outifa} setup
# Разрешаем трафик из локальной сети на внутреннем интерфейсе
${fw} add allow all from ${innet} to any out via ${inif}
${fw} add allow all from any to ${innet} in via ${inif}
# тут пошли общие разрешающие правила: ICMP, DNS, time, etc
##### И наконец, пропускаем в Интернет локальную сеть #####
${fw} add allow tcp from 'table(2)' to not ${innet} in via ${inif}
${fw} add allow tcp from not ${innet} to 'table(2)' out via ${inif}
##### Последнее правило, для занесения в журнал всех остальных (обычно запрещенных) пакетов.
${fw} add 65534 deny log all from any to any