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

Как пустить определённый трафик в другой шлюз

Добавлено: 2009-09-04 8:21:07
goshanecr
Добрый всем день!

Есть офис, инет раздаётся с помощью FreeBSD 7.1 i386, этот сервак устанавливает OpenVPN соединение с другим серваком. Необходимо сделать чтобы определённый вид трафика (к примеру всё что из локалки во внеху на такие то порты или адреса) шел по маршруту в openvpn тоннель. Вот что-то типа схемы:

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

LAN1[192.168.1.0/24]---BSD1[192.168.1.1; 1.1.1.2(белый адрес); 172.16.0.6(OpenVPN)]+--->ШЛЮЗ_ПРОВАЙДЕРА[1.1.1.1]
                                                                                   +--->ШЛЮЗ_OPENVPN[172.16.0.1]
Надо к примеру указать чтобы весь трафик из LAN на порты 80,443,21,..... шел через OpenVPN. Слышал про множественные таблицы маршрутизации, но хотелось бы не экспериментировать, попутно звоня с просьбами перезагрузить сервак так как он из-за моих экспериментов стал недоступен а сразу от работавших с этим людей.. Спасибо.

Re: Как пустить определённый трафик в другой шлюз

Добавлено: 2009-09-04 9:00:26
squid
так, а в чем собственно проблема, напиши правила файервола на каждый тип трафика
в зависимости от файервола - такие и правила будут

Re: Как пустить определённый трафик в другой шлюз

Добавлено: 2009-09-04 10:11:10
goshanecr
ну не было бы проблемы не писал бы.
фаервол ipfw
вот что добавляю в мультироутинг на стороне openvpn клиента:

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

setfib 2 route add 172.17.0.1/32 172.17.0.5  
setfib 2 route add default 172.17.0.1
ну и результирующий вывод:
setfib 2 netstat -rn

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

default            172.17.0.1         UGS         0        3   tun0
127.0.0.1          127.0.0.1          UH          0       10    lo0
172.17.0.1/32      172.17.0.5         UGS         1        0   tun0
172.17.0.5         172.17.0.6         UH          1        0   tun0
Вот что в ipfw добавил на стороне openvpn клиента:

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

00119   1193    71996 setfib 2 ip from 192.168.1.0/26 to 87.224.128.13
Это праило для проверки, чтобы все запросы к ресурсу uralweb.ru шли через мой сервак. Чтобы у пользователей всё не отпадало и я с помощью этого ресурса мог проверять идёт ли трафик по нужному мне пути.

На стороне openvpn сервера (его VPN адрес 172.17.0.1) такое правило:
ipfw table 1 list

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

172.17.0.6/32 0
192.168.1.0/26 0
ipfw show 1000

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

01000     0      0 divert 8668 ip from table(1) to any via ng0 out #Весь трафик от vpn клиента на нат
При пуске ping uralweb.ru с одного из компов с адресом 192.168.1.24 на стороне openvpn сервера в лог идут такие сообщения:

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

Fri Sep  4 13:05:29 2009 openvpnclient/1.2.3.4:1195 MULTI: bad source address from client [192.168.1.24], packet dropped
и до правила ipfw на стороне openvpn сервера не доходит.
В конфиге openvpn сервера есть описание подсети клиента:

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

route           192.168.1.0 255.255.255.0
А если выполняю с самого openvpn клиента (172.17.0.6, 192.168.1.1) команду:
setfib 2 traceroute uralweb.ru то всё идёт как надо через мой сервак.
То есть проблема как я вижу сейчас свелась к тому что openvpn сервер отбрасывает пакеты с адресами из сетки находящейся на другом конце. Что не так?

Re: Как пустить определённый трафик в другой шлюз

Добавлено: 2009-09-04 11:28:34
goshanecr
решил.
в файле конфигурации клиента /usr.local/etc/openvpn/ccd/client1 добавил описание сетки находящейся за этим клиентом:

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

iroute 192.168.1.0 255.255.255.192
и сразу понеслось..:)