Страница 1 из 1

Маршрутизация , двойной NAT

Добавлено: 2008-03-02 10:43:30
RusBiT
У интернет провайдера есть внутреннея локальная сеть (диапазоны ,к примеру, 172.16.0.0/16, 84.12.05.65/25 и т.п.).
Моя задача :
1. реализовать клиентам 10.0.0.29 и 10.0.0.8 , доступ в сеть провайдера (через интерфейс 10.0.0.7)
2. клиенту 10.0.0.62 доступ в интернет (через интерфейс 10.0.1.5 (данный интерфейс alias) ) , ресурсы провайдера можно оставить...

map.JPG
Пункт номер 1 я сделал, настроил nat, все работает

fxp0 - смотрит на сеть провайдера

В /etc/rc.conf

Код: Выделить всё

gateway_enable="YES"
firewall_enable="YES"
firewall_type="open"
natd_enable="YES"
natd_flags="-a ip_провайдера"
#доступ до lan
route add 172.16.0.0/16 ip_шлюза_провайдера
...

Код: Выделить всё

${fwcmd} add 010 divert 8668 ip from 10.0.0.29 to not 10.0.0.8/8 out xmit fxp0
${fwcmd} add 1010 allow ip from 10.0.0.29 to any
${fwcmd} add 1010 allow ip from any to 10.0.0.29

${fwcmd} add 010 divert 8668 ip from 10.0.0.8 to not 10.0.0.0/8 out xmit fxp0
${fwcmd} add 1010 allow ip from 10.0.0.8 to any
${fwcmd} add 1010 allow ip from any to 10.0.0.8
...
Теперь затруднение идет с пунктом номер 2, не совсем понимаю как поднять второй нат и прописать маршрут до инета :(

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-02 12:07:59
dikens3
2-а ната запускаются с помощью скрипта на sh. (кладёшь в /usr/local/etc/rc.d)
Дефолтовым маршрутом назначаешь:
через интерфейс 10.0.1.5
Создаёшь статические маршруты сюда:
У интернет провайдера есть внутреннея локальная сеть (диапазоны ,к примеру, 172.16.0.0/16, 84.12.05.65/25 и т.п.).

Код: Выделить всё

range_lan_provaider="172.16.0.0/16, 84.12.05.65/25"
clients1="10.0.0.0{8,29}"
clients2="10.0.0.62"
IP1="10.0.0.7"
IP2="10.0.1.5"

# Принимаем входящие пакеты на LAN_Интерфейсе в интернет и к провайдеру.
${fwcmd} add 80 allow ip from ${clients1},${clients2} to ${range_lan_provaider} in via LAN_Интерфейс
${fwcmd} add 90 allow ip from ${clients2} to not ${range_lan_provaider} in via LAN_Интерфейс

# Натим исходящие пакеты от клиентов 1 и 2 в сеть провайдера и интернет
${fwcmd} add 100 divert NAT1 ip from ${clients1},${clients2} to ${range_lan_provaider} out xmit fxp0
${fwcmd} add 110 divert NAT2 ip from ${clients2} to not ${range_lan_provaider} out xmit fxp0

# Разрешаем отправку пакетов в сеть провайдера  и интернет (Нат уже выполнен)
${fwcmd} add 120 allow ip from ${IP1} to ${range_lan_provaider} out xmit fxp0
${fwcmd} add 130 allow ip from ${IP2} to not ${range_lan_provaider} out xmit fxp0

# Производим обратное преобразование по приходу пакета (разначиваем)
${fwcmd} add 140 divert NAT1 ip from ${range_lan_provaider} to ${IP1} in via fxp0
${fwcmd} add 150 divert NAT2 ip from not ${range_lan_provaider} to ${IP2} in via fxp0

# Принимаем входящие пакеты (Тоже после ната) 
${fwcmd} add 160 allow ip from ${range_lan_provaider} to ${clients1},${clients2} in via fxp0
${fwcmd} add 170 allow ip from not ${range_lan_provaider} to ${clients2} in via fxp0

# Разрешаем отправку в нашу сеть пакетов принятых на интерфейсе FXP0 из интернет или провайдера (можно трафик считать так :-) )
${fwcmd} add 170 allow ip from ${range_lan_provaider} to ${clients1},${clients2} recv fxp0 xmit LAN_Интерфейс
${fwcmd} add 180 allow ip from not ${range_lan_provaider} to ${clients2} recv fxp0 xmit LAN_Интерфейс
P.S. И ещё, написал так для большего понимания и больше расписывать не собираюсь, так что проследи по каким правилам пакет уходит и приходит, тогда и вопросов не будет. Для этого существует действие log в правилах.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-02 13:36:32
RusBiT
Спасибо, оч понятно расписал , буду пробовать!

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-03 18:13:13
RusBiT
Помоему divert должен стоят на первом месте?

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-03 18:15:57
dikens3
RusBiT писал(а):Помоему divert должен стоят на первом месте?
Важно чтобы он работал правильно и в нужном месте, а место уже от построения зависит.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-03 19:23:35
RusBiT

Код: Выделить всё

${clients1},${clients2}
странно, но выводится только содержимое ${clients1}

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-03 20:54:45
dikens3
RusBiT писал(а):

Код: Выделить всё

${clients1},${clients2}
странно, но выводится только содержимое ${clients1}
ipfw show не судьба показать?

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 6:55:52
RusBiT
Возникла проблема вот с этим правилом. Диверт не происходит.

Код: Выделить всё

# Производим обратное преобразование по приходу пакета (разначиваем)
${fwcmd} add 140 divert NAT1 ip from ${range_lan_provaider} to ${IP1} in via fxp0
${fwcmd} add 150 divert NAT2 ip from not ${range_lan_provaider} to ${IP2} in via fxp0
Если же указать

Код: Выделить всё

${fwcmd} add 140 divert NAT1 ip from ${range_lan_provaider} to ${EXT_IP} in via fxp0
то все работает , но всех клиентов пускает в интернет.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 8:58:29
Alex Keda
как вы все [классический секс] с нумерацией правил... =)

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 11:05:37
RusBiT
Лис, подскажи где ошибка :)

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 13:30:07
schizoid
у тя ж 2 НАТа на разных портах слушают правильно?
первый к примеур диверт 8668, второй 8669... это так, чисто что б уточнить

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 21:19:32
RusBiT
Незнаю как даже благодарить dikens3! Помог , спасиб огромное! Все работает.
Неправильно я немного поставленную задачу описал.

Есть еще вопросики:
Как на нате запретить открытые не более 30 TCP сессий на внешнем интерфейсе?
Есть ли в freebsd блокировка отправки пакетов,например, чтоб в секунду отправлялось не больше 500 пакетов.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-04 21:49:48
schizoid
ну и описал быб че и как ;)

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 7:49:33
RusBiT
Статейку я конечно напишу, вроде сейчас с файрволом все ясно , только вот доконца охото доделать , ограничения на количество сессий поставить

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 10:10:12
dikens3
RusBiT писал(а):Есть еще вопросики:
Как на нате запретить открытые не более 30 TCP сессий на внешнем интерфейсе?
На вход/выход или и то и другое?

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 13:27:44
RusBiT
Нет, в данном случае нужно только на выход.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 13:44:40
hizel
кол-во одновременных сессий можно ограничить stateful правилами

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 16:51:57
dikens3
Если ты под сессиями имеешь ввиду IP-Адреса, тогда примерно так:

Код: Выделить всё

01000  26968  1412381 allow ip from me to any limit dst-addr 30

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 20:18:43
RusBiT
Вот как устроена вирусная блокировка у провайдера
Блокировка срабатывает при открытии более 600! сессий за 90 секунд... Сессией считается одно уникальное соединение с одного порта пользователя на один порт удаленой машины.

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 20:22:15
hizel
это больше смахивает на анализ нетфлов данных

Re: Маршрутизация , двойной NAT

Добавлено: 2008-03-05 21:03:45
dikens3
RusBiT писал(а):Вот как устроена вирусная блокировка у провайдера
Блокировка срабатывает при открытии более 600! сессий за 90 секунд... Сессией считается одно уникальное соединение с одного порта пользователя на один порт удаленой машины.
Я бы не парился над этим, для небольшой фирмы хватит.