Hello, Alex Khrenov!

On Fri, May 24, 2013 at 02:18:45PM +0300
[email protected] wrote about "[freebsd] ipfw + kernel nat":
> Добрый день. 
> Есть роутер под FreeBSD 9.1
> Крутится ipfw + kernel nat
> Нужно пробрасывать определенный порт внутрь локалки. Казалось бы задача
> тривиальная, но бьюсь уже второй день. Суть в том, что пробласываются
> только пакеты, приходящие на основной адрес интерфейса, пакеты
> приходящие на этот интерфейс на любой другой адрес попадают в НАТ и
> просто отбрасываются.
> 
> ext0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
>       
> options=c01bb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
>       ether 44:1e:a1:59:c5:ae
>       inet 1.1.1.1 netmask 0xfffffffc broadcast x.x.x.x
>       inet 2.2.2.2 netmask 0xfffffe00 broadcast x.x.x.x
> 
> ${fwcmd} nat 1 config same_ports reset deny_in if ext0 \
>             redirect_port tcp 10.0.0.1:25 25

imho, проблема в том, что вы задаете же сами "nat 1 config ... if ext0"
Поэтому, так как не задан явно адрес, то используется первый адрес
на интерфейсе. ipfw(8):

...
     if nic  Use ip address of NIC for aliasing, dynamically
     changing it if NIC's ip address changes.
...

и никто не обещал, что будут слушаться ВСЕ адреса. Речь идет об
одном адресе.

Думаю, что просто нужно поднимать для каждого адреса свое правило
ната с четким указанием ip-адреса. :(

Успехов!

-- 
 Lystopad Aleksandr 

Ответить