Здравствуйте! Подскажите пожалуйста, у меня не получается направить пакеты исходящие из 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...
как я понял, эту проблему пытались решить с указанием маршрута по умолчанию на некий виртуальный интерфейс, и затем его там ловить, но не совсем понял как это сделать.