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

tcp нет, icmp есть - freebsd+openvpn+nat

Добавлено: 2014-05-26 0:41:00
lex_coder
Доброй ночи.

Есть интересная проблемка, к серверу freebsd 9.2 на котором установлен сервер openvpn, подключаются клиенты с ОС gentoo и win для соединения к другому серверу от ИП данного, или, как будет лучше, получают инет через этот сервера, разницы нет, но дело в том, что icmp пакеты проходят через NAT на сервере, а tcp соединение не устанавливается, tcpdump показывает на клиентской тачке, что syn и syn/ack уходят и приходят соответственно, но дальше клиент не посылает никакого сообщения для финализации соединения.

[server]

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

vtnet0 : inet
tun0 : openvpn
ipfw show:
03100 allow tcp from 213.33.150.86 to me dst-port 22
03200 allow tcp from 10.15.0.0/24 to me dst-port 22
03300 allow ip from me to any out via vtnet0 setup keep-state
03400 divert 8668 ip from 10.15.0.0/24 to vtnet0_ext_ip out via vtnet0
03500 divert 8668 ip from ip_server_connect to vtnet0_ext in via vtnet0
03600 allow ip from me to 10.15.0.0/24 out via tun0

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

root@kot:~ # cat /etc/natd.conf
same_ports yes
use_sockets yes
log
dynamic yes
verbose yes
port natd
log_ipfw_denied no
proxy_only no
interface vtnet0
клиент:
ip route
[ip_server_connect] via 10.15.0.1 dev tun0

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

puchigus log # traceroute (ip_server_connect)
traceroute to ip_server_connect (ip_server_connect), 30 hops max, 60 byte packets
 1   (10.15.0.1)  27.503 ms  27.529 ms  27.525 ms
 2   (ip_server_connect)  27.524 ms  30.982 ms  31.039 ms
puchigus log #
клиент tcpdump

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

01:37:43.895764 IP 10.15.0.2.40798 > ip_server_connect.5005: Flags [S], seq 1411167535, win 29200, options [mss 1460,sackOK,TS val 311023436 ecr 0,nop,wscale 7], length 0
01:37:43.924422 IP ip_server_connect.5005 > 10.15.0.2.40798: Flags [S.], seq 3985324745, ack 1411167536, win 65535, options [mss 1368,nop,wscale 6,sackOK,TS val 3800491170 ecr 311023436], length 0
01:37:45.899774 IP 10.15.0.2.40798 > ip_server_connect.5005: Flags [S], seq 1411167535, win 29200, options [mss 1460,sackOK,TS val 311025440 ecr 0,nop,wscale 7], length 0
01:37:45.926919 IP ip_server_connect.5005 > 10.15.0.2.40798: Flags [S.], seq 3985324745, ack 1411167536, win 65535, options [mss 1368,nop,wscale 6,sackOK,TS val 3800491170 ecr 311025440], length 0

Сервер [ip_server_connect] - слушаем порт:
nc -lv 5005

Re: tcp нет, icmp есть - freebsd+openvpn+nat

Добавлено: 2014-06-01 19:19:46
lex_coder
Нашел решение!

Дело было в сетевой карте, отключил -rxcsum и заработало.

- Библиотека libalias, на которой основан ipfw nat, плохо дружит с функциями аппаратного ускорения расчета контрольных сумм и управления потоками, которые доступны на некотроых сетевых адаптерах. Рекомендуется выключать tcp segmentation offloading (TSO), а так же rxcsum и txcsum на том сетевом адаптере где работает нат
http://forum.lissyara.su/viewtopic.php? ... 5&start=25

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

ifconfig igb0 -rxcsum -txcsum -tso
Расширенный лог tcpdump -v

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

    10.15.0.2.57268 > ip_server_connect.http: Flags [S], cksum 0xae25 (correct), seq 1673344120, win 29200, options [mss 1460,sackOK,TS val 163922224 ecr 0,nop,wscale 7], length 0
19:57:48.251079 IP (tos 0x0, ttl 63, id 52237, offset 0, flags [DF], proto TCP (6), length 60)
    ip_server_connect.http > 10.15.0.2.57268: Flags [S.], cksum 0x05e2 (incorrect -> 0xc0a6), seq 493214540, ack 1673344121, win 65535, options [mss 1368,nop,wscale 6,sackOK,TS val 2881796964 ecr 163922224], length 0
    10.15.0.2.57268 > ip_server_connect.http: Flags [S], cksum 0xaa3b (correct), seq 1673344120, win 29200, options [mss 1460,sackOK,TS val 163923226 ecr 0,nop,wscale 7], length 0
19:57:49.251187 IP (tos 0x0, ttl 63, id 52238, offset 0, flags [DF], proto TCP (6), length 60)
    ip_server_connect.http > 10.15.0.2.57268: Flags [S.], cksum 0x05e2 (incorrect -> 0xbcbc), seq 493214540, ack 1673344121, win 65535, options [mss 1368,nop,wscale 6,sackOK,TS val 2881796964 ecr 163923226], length 0
Видно, что сумма пакета некоректна. И тут не причем, как думал первоначально, MSS и MTU.

Re: tcp нет, icmp есть - freebsd+openvpn+nat

Добавлено: 2014-06-01 22:29:23
Alex Keda
чё за карточка?
у интеля хорошие сетевухи-то...

Re: tcp нет, icmp есть - freebsd+openvpn+nat

Добавлено: 2014-06-01 22:59:21
lex_coder
В данном случае, настраивалось все на виртуалках, virtualbox и VMmanager, по ссылке в посте решения как раз на интел и показан пример решения - igb0