LINUX.ORG.RU
решено ФорумAdmin

OpenVPN - проблема больших пакетов

 ,


1

4

Заранее извиняюсь перед всеми присутствующими за портянку

Раньше всё было окей, но теперь при прохождении больших пакетов некоторые из них теряются.

Симптомы следующие:

^_^@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»

★★★★★

Последнее исправление: Pinkbyte (всего исправлений: 3)

fragment не трогайте, он нужен в других случаях.

Что говорит tcpdump на интерфейсе интернета?

ValdikSS ★★★★★
()
Ответ на: комментарий от ValdikSS

Выхлоп с обоих концов при ping -s 1500 oas1 -c 10, выполненной с сервера

Клиент(ppp0 - PPTP, как я уже упоминал):

oas1 pinkbyte # tcpdump -i ppp0 -nn host serv
error : ret -1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp0, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
16:30:22.874028 IP serv.1194 > client.45149: UDP, length 101
16:30:23.881681 IP serv.1194 > client.45149: UDP, length 101
16:30:24.882944 IP serv.1194 > client.45149: UDP, length 101
16:30:25.846292 IP serv.1194 > client.45149: UDP, length 1549
16:30:25.846311 IP serv > client: ip-proto-17
16:30:25.848359 IP serv.1194 > client.45149: UDP, length 101
16:30:25.848449 IP client.45149 > serv.1194: UDP, length 1549
16:30:25.848459 IP client > serv: ip-proto-17
16:30:25.848471 IP client.45149 > serv.1194: UDP, length 101
16:30:26.896052 IP serv.1194 > client.45149: UDP, length 1549
16:30:26.896067 IP serv > client: ip-proto-17
16:30:27.890797 IP serv.1194 > client.45149: UDP, length 1549
16:30:27.890798 IP serv > client: ip-proto-17
16:30:27.892858 IP serv.1194 > client.45149: UDP, length 77
16:30:27.892913 IP client.45149 > serv.1194: UDP, length 77
16:30:28.861000 IP serv.1194 > client.45149: UDP, length 1549
16:30:28.861018 IP serv > client: ip-proto-17
16:30:28.862924 IP serv.1194 > client.45149: UDP, length 101
16:30:28.863004 IP client.45149 > serv.1194: UDP, length 1549
16:30:28.863013 IP client > serv: ip-proto-17
16:30:28.863024 IP client.45149 > serv.1194: UDP, length 101
16:30:29.856193 IP serv.1194 > client.45149: UDP, length 1549
16:30:29.856208 IP serv > client: ip-proto-17
16:30:29.857732 IP serv.1194 > client.45149: UDP, length 101
16:30:29.857803 IP client.45149 > serv.1194: UDP, length 1549
16:30:29.857813 IP client > serv: ip-proto-17
16:30:29.857824 IP client.45149 > serv.1194: UDP, length 101
16:30:30.885728 IP serv.1194 > client.45149: UDP, length 1549
16:30:30.885743 IP serv > client: ip-proto-17
16:30:30.887436 IP serv.1194 > client.45149: UDP, length 101
16:30:30.887519 IP client.45149 > serv.1194: UDP, length 1549
16:30:30.887529 IP client > serv: ip-proto-17
16:30:30.887540 IP client.45149 > serv.1194: UDP, length 101
16:30:31.840671 IP serv.1194 > client.45149: UDP, length 1549
16:30:31.840714 IP serv > client: ip-proto-17
16:30:31.842531 IP serv.1194 > client.45149: UDP, length 101
16:30:31.842609 IP client.45149 > serv.1194: UDP, length 1549
16:30:31.842619 IP client > serv: ip-proto-17
16:30:31.842630 IP client.45149 > serv.1194: UDP, length 101
16:30:33.870579 IP client.45149 > serv.1194: UDP, length 77
16:30:33.953907 IP serv.1194 > client.45149: UDP, length 77

Сервер(ppp999 - ADSL):

mini-router pinkbyte # tcpdump -i ppp999 -nn host client
error : ret -1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ppp999, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
16:30:25.332457 IP serv > client: ip-proto-17
16:30:25.334580 IP serv.1194 > client.45149: UDP, length 101
16:30:26.335473 IP serv > client: ip-proto-17
16:30:26.337623 IP serv.1194 > client.45149: UDP, length 101
16:30:27.299570 IP serv.1194 > client.45149: UDP, length 1549
16:30:27.301290 IP serv > client: ip-proto-17
16:30:27.303439 IP serv.1194 > client.45149: UDP, length 101
16:30:27.358328 IP client > serv: ip-proto-17
16:30:27.360401 IP client.45149 > serv.1194: UDP, length 1549
16:30:27.360404 IP client > serv: ip-proto-17
16:30:27.360407 IP client.45149 > serv.1194: UDP, length 101
16:30:28.345847 IP serv.1194 > client.45149: UDP, length 1549
16:30:28.347624 IP serv > client: ip-proto-17
16:30:29.344013 IP serv.1194 > client.45149: UDP, length 1549
16:30:29.345763 IP serv > client: ip-proto-17
16:30:29.347514 IP serv.1194 > client.45149: UDP, length 77
16:30:29.403301 IP client.45149 > serv.1194: UDP, length 77
16:30:30.312873 IP serv.1194 > client.45149: UDP, length 1549
16:30:30.314596 IP serv > client: ip-proto-17
16:30:30.316773 IP serv.1194 > client.45149: UDP, length 101
16:30:30.373286 IP client > serv: ip-proto-17
16:30:30.374871 IP client.45149 > serv.1194: UDP, length 1549
16:30:30.374873 IP client > serv: ip-proto-17
16:30:30.375224 IP client.45149 > serv.1194: UDP, length 101
16:30:31.310025 IP serv.1194 > client.45149: UDP, length 1549
16:30:31.311773 IP serv > client: ip-proto-17
16:30:31.313923 IP serv.1194 > client.45149: UDP, length 101
16:30:31.367931 IP client > serv: ip-proto-17
16:30:31.369515 IP client.45149 > serv.1194: UDP, length 1549
16:30:31.369856 IP client > serv: ip-proto-17
16:30:31.369908 IP client.45149 > serv.1194: UDP, length 101
16:30:32.337774 IP serv.1194 > client.45149: UDP, length 1549
16:30:32.339497 IP serv > client: ip-proto-17
16:30:32.341674 IP serv.1194 > client.45149: UDP, length 101
16:30:32.397840 IP client > serv: ip-proto-17
16:30:32.399389 IP client.45149 > serv.1194: UDP, length 1549
16:30:32.399732 IP client > serv: ip-proto-17
16:30:32.399784 IP client.45149 > serv.1194: UDP, length 101
16:30:33.292078 IP serv.1194 > client.45149: UDP, length 1549
16:30:33.293799 IP serv > client: ip-proto-17
16:30:33.295948 IP serv.1194 > client.45149: UDP, length 101
16:30:33.352744 IP client > serv: ip-proto-17
16:30:33.355069 IP client.45149 > serv.1194: UDP, length 1549
16:30:33.355071 IP client > serv: ip-proto-17
16:30:33.355086 IP client.45149 > serv.1194: UDP, length 101
16:30:35.381033 IP client.45149 > serv.1194: UDP, length 77
16:30:35.408025 IP serv.1194 > client.45149: UDP, length 77

Собственно как выглядит при этом ping(для приведенных выше выхлопов tcpdump):

mini-router ~ # ping -s 1500 -c 10 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=4 ttl=63 time=83.4 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=7 ttl=63 time=96.9 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=8 ttl=63 time=90.4 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=9 ttl=63 time=119 ms
1508 bytes from oas1.dstu.local (10.0.0.213): icmp_seq=10 ttl=63 time=74.2 ms

--- oas1.dstu.local ping statistics ---
10 packets transmitted, 5 received, 50% packet loss, time 9003ms
rtt min/avg/max/mdev = 74.204/92.906/119.451/15.273 ms

Сразу говорю, в туннеле еще могут быть небольшие ack-пакеты от BGP(внутри туннеля поднята сессия), но другого трафика там быть сейчас не должно

Pinkbyte ★★★★★
() автор топика
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от ValdikSS

Стандартные сообщения(установления соединения, назначения IP), никаких warning-ов или ошибок(warning-и кстати были когда я игрался с fragment).

Pinkbyte ★★★★★
() автор топика
Ответ на: комментарий от Pinkbyte

Пока не знаю, в чем дело, посмотрю еще раз позже.

ValdikSS ★★★★★
()

Прошу прощения у всех отписавшихся - я идиот и проблема была в криво настроенном шейпере на сервере

Pinkbyte ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.