The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"NAT на двух провайдерских линках FreeBSD/pf"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"NAT на двух провайдерских линках FreeBSD/pf"  
Сообщение от VVEBER email(ok) on 27-Мрт-08, 14:30 
Имеется:

sysserver# uname -rs
FreeBSD 5.4-RELEASE

Интерфейс re0=192.168.1.10 - смотрит в локалку
Интерфейс re1=10.10.10.10 - 1-ый провайдер ( gw 10.10.10.1 )
Интерфейс rl0=192.168.2.2 - 2-ой провайдер ( gw 192.168.2.1 )

default gw = 192.168.2.1 ( второй линк провайдерский )
________________________________________________________

пользователи из сети 192.168.1.0/24 ходят в Интернет через NAT:

#cat /etc/pf.conf
lansn="192.168.1.0/24"
lan="re0"
prov1="re1"
prov2="rl0"
lan_ip="192.168.1.10"
prov1_ip="10.10.10.10"
prov2_ip="192.168.2.2"
prov1_gw="10.10.10.1"
prov2_gw="192.168.2.1"

nat on $prov2 from { 192.168.1.14/32, 192.168.1.15/32 } to any -> $prov2_ip

block all

pass in on $lan from { 192.168.1.14/32, 192.168.1.15/32 } to any keep state
pass out on $lan from any to { 192.168.1.14/32, 192.168.1.15/32 } keep state
pass out on $prov1 from $prov1_ip to any
pass in quick on $prov1 reply-to ( $prov1 $prov1_gw ) keep state
pass out on $prov2 from $prov2_ip to any


В таком варианте работает всё. Пробую пустить двух других пользователей через другой канал:


#cat /etc/pf.conf
lansn="192.168.1.0/24"
lan="re0"
prov1="re1"
prov2="rl0"
lan_ip="192.168.1.10"
prov1_ip="10.10.10.10"
prov2_ip="192.168.2.2"
prov1_gw="10.10.10.1"
prov2_gw="192.168.2.1"

nat on $prov2 from { 192.168.1.14/32, 192.168.1.15/32 } to any -> $prov2_ip
nat on $prov1 from { 192.168.1.20/32, 192.168.1.21/32 } to any -> $prov1_ip

block all

pass in on $lan from { 192.168.1.14/32, 192.168.1.15/32, 192.168.1.20/32, 192.168.1.21/32  } to any keep state
pass out on $lan from any to { 192.168.1.14/32, 192.168.1.15/32, 192.168.1.20/32, 192.168.1.21/32 } keep state

pass out on $prov1 from $prov1_ip to any
pass in quick on $prov1 reply-to ( $prov1 $prov1_gw ) keep state
pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from $prov1_ip to any keep state
pass out on $prov2 from $prov2_ip to any

И в результате таких переделок получаю, что при попытке с ип 192.168.1.20 (который должен уйти через 1-го провайдера, по идее) шлюз отвечает, что заданный узел недоступен. В то время, как через второй линк люди продолжают успешно работать.

tcpdump -ni re1 | grep 192.168.1.20
молчит

Попробовал сделать следующую пакость:
вместо
pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from $prov1_ip to any keep state

поставить:
pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from 192.168.1.20/32 to any keep state

изменилось следующее: сообщений "заданный узел недоступен" клиент перестал получать и tcpdump увидел пакеты, адресованные через $prov1, но src_add был неNATed, а 192.168.1.20, как будто и не было никакого НАТа.


Подскажите пожалуйста, как с этим бороться, и сделать НАТ по двум интерфейсам ?

Спасибо

Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "NAT на двух провайдерских линках FreeBSD/pf"  
Сообщение от Andrew Kolchoogin on 27-Мрт-08, 16:39 
>pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from $prov1_ip
>to any keep state

pass out quick on $prov1 route-to

Невнимательность?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "NAT на двух провайдерских линках FreeBSD/pf"  
Сообщение от VVEBER email(ok) on 28-Мрт-08, 14:46 
>>pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from $prov1_ip
>>to any keep state
>
>pass out quick on $prov1 route-to
>
>Невнимательность?

Поменял на Ваш вариант. Одна фигня, говорит "заданный узел недоступен" и опять на интерфейсе нет даже намека на пакет.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "NAT на двух провайдерских линках FreeBSD/pf"  
Сообщение от VVEBER email(ok) on 30-Мрт-08, 13:03 
А ларчик просто открывался:

nat on $prov2 from { 192.168.1.14/32, 192.168.1.15/32 } to any -> $prov2_ip
nat on $prov2 from { 192.168.1.20/32, 192.168.1.21/32 } to any -> $prov1_ip


_____________________

pass out quick on $prov2 route-to ( $prov1 $prov1_gw ) from $prov1_ip to any keep state


Проблему удалось разрешить благодаря статье: http://www.opennet.ru/openforum/vsluhforumID1/79497.html

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру