PF policy routing local interface, rusdis, 25-Ноя-09, 14:47 [смотреть все]Здравствуйте! Подскажите пожалуйста, у меня не получается направить пакеты исходящие из localhost. Конфигурация: FREEBSD-7.1 PF ng0 – внешний интерфейс с ограниченным каналом и реальным IP gw_ng0-шлюз для ng0vlan5-10.8.37.4 внешний интерфейс с дешевым трафиком и IP под NAT провайдера, gw_vlan5 – шлюз 10.8.37.1 по умолчанию маршрутизация настроена на дешевый канал vlan5. Хочу сделать, чтобы запросы на отправку/прием почты, и WEB инициализированными самим маршрутизатором шли через канал с реальным IP ng0, Пример: Отправить пакеты через интерфейс ng0, приходящие на физический интерфейс re0: <code> pass in on re0 route-to (ng0 $gw_ng0) proto {tcp, udp} from any to any port {80, 25} flags S/SA keep state </code> Данное правило работает, т.к. пакеты идут от ВНЕШНЕЙ машины на интерфейс re0.
Теперь пробую написать правило для пакетов исходящих от Localhost т.к. путь по умолчанию настроен на gw_vlan5 ловлю их на vlan5 <code> pass OUT on vlan5 route-to (ng0 $gw_ng0) proto {tcp, udp} from any to any port {80, 25} flags S/SA keep state </code> не работает: <code> #tcpdump -nettti pflog0 tcpdump: WARNING: pflog0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on pflog0, link-type PFLOG (OpenBSD pflog file), capture size 96 bytes 000000 rule 2/0(match): pass out on vlan5: 10.8.37.4.62764 > 62.152.59.5.80: tcp 40 [bad hdr length 0 - too short, < 20] где 62.152.59.5 сайт ip-ping.ru </code> Похожую проблему нашел в статье http://lists.freebsd.org/pipermail/freebsd-net/2007-July/014... как я понял, эту проблему пытались решить с указанием маршрута по умолчанию на некий виртуальный интерфейс, и затем его там ловить, но не совсем понял как это сделать.
|
- PF policy routing local interface, vagif, 16:09 , 25-Ноя-09 (1)
привет!лениво разбираться... http://wiki.zeynalov.com/vagif:docs:freebsd:pf#load_balancin...- посмотри, тут есть мои живые конфиги. Я тут пытался раскидывать трафик между stream & corbina. причем corbina - было по умолчанию как выяснилось, некоторые сайты не любят, когда для одной и той же сессии пакеты приходят с разных IP. И icq оказалась в том же числе. Поэтому некоторые адреса я явно загнал в какие-то каналы статически.
- PF policy routing local interface, rusdis, 16:40 , 25-Ноя-09 (2)
>http://wiki.zeynalov.com/vagif:docs:freebsd:pf#load_balancin...- посмотри, тут есть мои >живые конфиги. есля я правильно понял из конфигоф указанных на указанном сайте pass in quick on $int_if route-to { ($ext_if2 $ext_gw2) } proto { tcp } from any to $icq keep state pass in quick on $int_if route-to { ($corbina_if $corbina_gw) } proto { tcp, udp } from any to $corbina keep state то $int_if это интерфейс к которому подключены пользователи/клиенты и если запрос придет от них на ip icq то он уйдет в ext_if2, если на ip corbina то уйдет на $corbina ;
такое правило как я уже писал у меня работает, проблема заключается в том что, если запустить traceroute на клиенте подключенному к $int_if до ip ICQ и до IP corbina, то каждый уйдет по своему интефейсу, ! НО ! если сделать traceroute с сервера до ip icq, и до ip corbina то все они пойдут на шлюз по умолчанию, т.е. в corbina, можете проверить.
- PF policy routing local interface, rusdis, 17:17 , 25-Ноя-09 (3)
Хочу добавить вот еще что: если написать pass out log quick on vlan5 route-to (ng0 $gw_ng0) proto icmp from any to any keep state и сделать ping -c 5 77.88.21.8то [root@julman /etc]# tcpdump -i ng0 host 77.88.21.8 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on ng0, link-type NULL (BSD loopback), capture size 96 bytes 17:06:10.829710 IP 94.102.53.85 > ya.ru: ICMP echo request, id 18806, seq 0, length 64 17:06:10.980776 IP ya.ru > 94.102.53.85: ICMP echo reply, id 18806, seq 0, length 64 17:06:11.830409 IP julman.s > ya.ru: ICMP echo request, id 32702, seq 1, length 64 17:06:12.831183 IP julman.s > ya.ru: ICMP echo request, id 32702, seq 2, length 64 17:06:13.831959 IP julman.s > ya.ru: ICMP echo request, id 32702, seq 3, length 64 17:06:14.832765 IP julman.s > ya.ru: ICMP echo request, id 32702, seq 4, length 64 т.е. пакеты заворачиваются на ng0 но ПИНГ не проходит, tcpdump -i vlan5 host 77.88.21.8 пакетов ни входящих ни исходящих не регистрирует
- PF policy routing local interface, vagif, 17:26 , 25-Ноя-09 (4)
>том что, если запустить traceroute на клиенте подключенному к $int_if до >ip ICQ и до IP corbina, то каждый уйдет по своему >интефейсу, ! НО ! если сделать traceroute с сервера до ip >icq, и до ip corbina то все они пойдут на шлюз >по умолчанию, т.е. в corbina, можете проверить. честно скажу, icmp пакетами не заморачивался... но все это выглядит вполне логично, ведь правила навешиваются только на интерфейс пользователей ($int_if), а на сервере эти правила не работают.
- PF policy routing local interface, rusdis, 17:43 , 25-Ноя-09 (5)
>честно скажу, icmp пакетами не заморачивался... >но все это выглядит вполне логично, ведь правила навешиваются только на интерфейс >пользователей ($int_if), а на сервере эти правила не работают. В том то и дело что берем работающее правило для клиентского интерфейса меняем на нужный (vlan5) и направление на out , и не работает!
- PF policy routing local interface, rusdis, 20:20 , 30-Ноя-09 (6)
Обгуглив весь интернет нашел в mail archive, то что мне нужно называлось Port-Based-Routinghttp://www.mail-archive.com/misc@openbsd.org/msg36355.html смысл таков $ext_sainf - шлюз по умолчанию, куда идут все пакеты. $ext_kiev - интерфейс через который следует выпустить пакет. $gw_kiev - шлюз для $ext_kiev nat on $ext_sainf proto {tcp,udp} from self to any port smtp tag IF2 -> ($ext_kiev) pass out log quick on $ext_sainf route-to ($ext_kiev $gw_kiev) tagged IF2 keep state
вот эти два правила решают поставленную задачу.
- PF policy routing local interface, vagif, 21:26 , 30-Ноя-09 (7)
>Обгуглив весь интернет нашел в mail archive, то что мне нужно называлось >Port-Based-Routing кстати, новая FreeBSD 8 поддерживает на уровне ядра несколько роутинговых таблиц. + стала более продвинутая поддержка jail, со своим роутингом, nat'ом, fw, и т.д. вот только руки все не доходят поковыряться...
|