ipfw (divert*2 + pipe) = как правильно?

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
vampirio
проходил мимо
Сообщения: 5
Зарегистрирован: 2008-06-03 11:43:48

ipfw (divert*2 + pipe) = как правильно?

Непрочитанное сообщение vampirio » 2008-09-13 7:16:07

не получается толком разобаться как правильно шейпить канал с двумя натами:
есть подключение к сети провайдера, по умолчанию есть только сеть, после поднятия 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 

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zingel
beastie
Сообщения: 6204
Зарегистрирован: 2007-10-30 3:56:49
Откуда: Moscow
Контактная информация:

Re: ipfw (divert*2 + pipe) = как правильно?

Непрочитанное сообщение zingel » 2008-09-15 21:10:03

схему
Z301171463546 - можно пожертвовать мне денег