Заранее извиняюсь перед всеми присутствующими за портянку
Раньше всё было окей, но теперь при прохождении больших пакетов некоторые из них теряются.
Симптомы следующие:
^_^@phantom ~ # ping -s 1500 oas1
PING oas1.dstu.local (10.0.0.213) 1500(1528) bytes of data.
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=1 ttl=63 time=132 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=3 ttl=63 time=280 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=5 ttl=63 time=74.4 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=6 ttl=63 time=99.0 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=7 ttl=63 time=139 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=8 ttl=63 time=122 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=10 ttl=63 time=131 ms
Где oas1 - это хост, доступный через VPN-туннель.
Кастую известного мне эксперта по OpenVPN: cast ValdikSS
Дано:
1) сервер OpenVPN - домашняя машина за ADSL(MTU соединения с интернетом - 1492);
конфиг сервера:
cd /etc/openvpn/serv
port 1194
proto udp
dev tap_vpn
ca ca.crt
cert serv.crt
key serv.key
dh dh2048.pem
server-bridge 192.168.3.1 255.255.255.0 192.168.3.50 192.168.3.250
ifconfig 192.168.3.1 255.255.255.0
client-config-dir ccd
ccd-exclusive
keepalive 10 60
client-to-client
persist-key
persist-tun
float
Клиент - подключается к интернету через PPTP, MTU соединения 1400. У клиента, как и у сервера - белые IP.
Конфиг клиента:
cd /etc/openvpn/home
client
proto udp
dev tap_home
ca ca.crt
dh dh2048.pem
cert work.crt
key work.key
remote server 1194
persist-key
persist-tun
keepalive 10 60
float
resolv-retry infinite
nobind
ns-cert-type server
Проверил что pmtu discovery работает, как на сервер так и на клиенте:
net.ipv4.ip_no_pmtu_disc = 0 в обоих случаях.
tracepath с сервера на клиент:
^_^@phantom ~ # tracepath client
1?: [LOCALHOST] pmtu 1500
1: mini-router.local 0.479ms
1: mini-router.local 0.557ms
2: mini-router.local 0.446ms pmtu 1492
2: asr3-ats32.aaanet.ru 41.107ms
3: g0-ats66-red.aaanet.ru 31.201ms
4: ler-cr01-ae12.0.rnd.stream-internet.net 36.358ms
5: m9-cr04-be7.61.msk.stream-internet.net 46.254ms
6: m9-cr05-ae3.77.msk.stream-internet.net 52.099ms
7: m9-cr01-po5.77.msk.stream-internet.net 48.917ms
8: filanco-m9.msk.stream-internet.net 47.587ms
9: 31.28.19.5 48.643ms
10: 50.233.vsd-net.ru 81.825ms asymm 13
11: net130.234.188-146.ertelecom.ru 70.616ms asymm 10
12: vpn.donstu.ru 57.784ms asymm 11
13: vpn.donstu.ru 54.639ms pmtu 1400
13: serv 65.887ms reached
И обратно:
oas1 pinkbyte # tracepath serv
1?: [LOCALHOST] pmtu 1400
1: vpn-virt.donstu.ru 0.627ms
1: vpn-virt.donstu.ru 0.713ms
2: bgp-dstu.micronet-rostov.ru 0.841ms
3: net130.234.188-147.ertelecom.ru 1.059ms
4: Ertelecom-gw.transtelecom.net 20.825ms asymm 5
5: mskn08.transtelecom.net 17.665ms
6: m9-cr05-ae16.0.msk.stream-internet.net 17.181ms asymm 7
7: m9-cr04-be3.77.msk.stream-internet.net 18.985ms asymm 8
8: ler-cr01-ae7.61.rnd.stream-internet.net 32.362ms asymm 9
9: 212.188.45.74 32.030ms asymm 10
10: asr3-ats32.aaanet.ru 31.896ms asymm 11
11: client 50.507ms reached
Здесь serv и client - белые IP доступные из Интернета
К слову: ping -s 2000 serv с клиента(по белым IP, не внутри туннеля) проходит на ура, так что фрагментированные пакеты вроде как проходят хорошо.
Клиент и сервер - Gentoo Linux
Пробовал крутить link-mtu, tun-mtu, fragment(от 1400 и ниже вплоть до 1000, синхронно на сервер и клиенте) - безрезультатно. В tcpdump видно уменьшение размеров пакетов, но как только я задаю fragment ниже 1400, в дополнение к потерянным пакетам ping начинает писать «Frag reassembly time exceeded»