[freebsd] Есть ли особенности проброса порта в туннель?

Eugene Grosbein eugen at grosbein.net
Fri Jun 24 10:30:01 EEST 2022


24.06.2022 10:35, Nick Kostirya via freebsd пишет:
> Привет.
> 
> У меня вопрос: есть ли особенности проброса порта в туннель?

Только размер пакета: часто на туннеле меньше MTU и если у пакета выставлен DF-бит
и пакет больше next-hop MTU, он не пролезет. Ещё FreeBSD пока не умеет роутить
комбинированные LRO пакеты в IPSec, если суммарный размер "чанка" больше MTU IPSec-туннеля,
но это не твой случай. Если же всё пролазит, то проблем не должно быть
при условии следования документации.

> У сервера X (12.3-RELEASE-p5)
> 
> ${fwcmd} nat 1 config if vmx0 redirect_port tcp 192.168.12.111:80 8080
> ${fwcmd} add nat 1 ip from any to any 8080
> (упростил уже до такого)
> 
> Делаю для проверки
> echo hello | nc X.X.X.X 8080
> 
> На сервере Y с IP 192.168.12.111 в туннеле (13.1-RELEASE)
> Вижу только входящий пакет и все.
> # tcpdump -n -i ipsec0 -a 'port 8080 or port 80'
> 06:07:03.106586 IP X.X.X.X.62673 > 192.168.12.111.80: Flags [S], seq 1358968744, win 65535, options [mss 16344,nop,wscale 6,sackOK,TS val 3568935363 ecr 0], length 0

Ты увидел успешно расшированный пакет на приёмной стороне,
а это значит, что к серверу X вопросов никаких быть не может,
он всё правильно отфорвардил и даже не налажал с шифрованием.

> Когда на сервере X делаю запрос напрямую по туннелю без redirect_port
> 
> echo hello | nc 192.168.12.111 80
> 
> То на сервере Y вижу сразу и ответ
> 
> # tcpdump -n -i ipsec0 -a 'port 8080 or port 80'
> 06:28:41.232011 IP 192.168.12.1.49774 > 192.168.12.111.80: Flags [S], seq 1477405936, win 65535, options [mss 1360,nop,wscale 6,sackOK,TS val 878248554 ecr 0], length 0
> 06:28:41.232045 IP 192.168.12.111.80 > 192.168.12.1.49774: Flags [S.], seq 3253001398, ack 1477405937, win 65535, options [mss 1360,nop,wscale 6,sackOK,TS val 2263718684 ecr 878248554], length 0
> 
> Может что-то есть такое, что я не знаю?
> 
> И там и там net.inet.ip.forwarding=1

Разница в том, что в первом случае адрес источника был X.X.X.X, а во втором 192.168.12.1.
Либо входящий пакет был убит файрволом на приёмной стороне, либо ответ не находит роута в туннель
и уходит в другой интерфейс или вообще никуда.



More information about the freebsd mailing list