Поясню. Есть две сети.
Сеть 1 выходит в интернет через Keenetic 4G. За роутером — хост №1, который подключён к OpenVPN-серверу из сети 2 (IP хоста — 10.8.0.5), ОС — Windows 7, Outlook 2010.
Сеть 2 выходит в интернет через Zyxel Keenetic Giga III (IP 192.168.100.1). За роутером стоит Ubuntu Server с OpenVPN-сервером (IP 192.168.100.34 и 10.8.0.1), а также CardDAV-сервер — он же хост №2 (IP 192.168.100.16), к OpenVPN-серверу не подключён.
Задача состоит в том, чтобы хост №1 смог подключиться к хосту №2 по его локальному IP 192.168.100.16 на порт 5232.
Проблема заключается в том, что успешный коннект происходит только в том случае, если с хоста №1 перед попыткой подключения к хосту №2 отправить пинг или трассировку до этого второго хоста — после этого в течение нескольких минут все попытки соединения заканчиваются успешно.
Я запустил на хосте №2 Wireshark, и вот как выглядит попытка неуспешного коннекта (начиная с п.4):
Код: Выделить всё
2 6.489890 10.8.0.5 192.168.100.1 DNS 87 Standard query 0x6381 A radicale.local.company.ru
3 6.501412 192.168.100.1 10.8.0.5 DNS 103 Standard query response 0x6381 A radicale.local.company.ru A 192.168.100.16
4 6.510978 10.8.0.5 192.168.100.16 TCP 66 49326 → 5232 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
5 9.514644 10.8.0.5 192.168.100.16 TCP 66 [TCP Retransmission] 49326 → 5232 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
6 15.514442 10.8.0.5 192.168.100.16 TCP 62 [TCP Retransmission] 49326 → 5232 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 SACK_PERM=1
7 36.842318 00:ff:b8:**:**:** Broadcast ARP 42 Who has 10.8.0.6? Tell 10.8.0.5
8 36.842342 00:ff:b9:**:**:** 00:ff:b8:**:**:** ARP 42 10.8.0.6 is at 00:ff:b9:**:**:**
9 36.842363 10.8.0.5 10.8.0.1 NBNS 110 Refresh NB USER-PC<00>
10 36.854866 10.8.0.1 10.8.0.5 NBNS 104 Registration response NB 10.8.0.5
11 37.503446 10.8.0.5 192.168.100.1 DNS 86 Standard query 0xfc8c A cescollector.cwatchapi.com
12 37.595638 192.168.100.1 10.8.0.5 DNS 320 Standard query response 0xfc8c A cescollector.cwatchapi.com CNAME cwnlogcollectorendp-env.us-east-1.elasticbeanstalk.com A 52.86.211.88 A 34.224.132.77 NS ns-1011.awsdns-62.net NS ns-1219.awsdns-24.org NS ns-1846.awsdns-38.co.uk NS ns-59.awsdns-07.com
13 52.217476 10.8.0.5 10.8.0.7 NBNS 92 Name query NB USER-PC<1c>
...
17 54.477961 10.8.0.1 10.8.0.5 NBNS 98 Name query response, Requested name does not exist Unknown
Код: Выделить всё
27 60.294699 10.8.0.5 192.168.100.16 ICMP 74 Echo (ping) request id=0x0001, seq=16/4096, ttl=128 (reply in 28)
28 60.306524 192.168.100.16 10.8.0.5 ICMP 74 Echo (ping) reply id=0x0001, seq=16/4096, ttl=63 (request in 27)
29 67.552374 10.8.0.5 192.168.100.16 TCP 66 49329 → 5232 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
30 67.563843 192.168.100.16 10.8.0.5 TCP 66 5232 → 49329 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1352 SACK_PERM=1 WS=32
31 67.563911 10.8.0.5 192.168.100.16 TCP 54 49329 → 5232 [ACK] Seq=1 Ack=1 Win=66048 Len=0
32 67.564297 10.8.0.5 192.168.100.16 TCP 348 49329 → 5232 [PSH, ACK] Seq=1 Ack=1 Win=66048 Len=294 [TCP segment of a reassembled PDU]
33 67.575282 192.168.100.16 10.8.0.5 TCP 54 5232 → 49329 [ACK] Seq=1 Ack=295 Win=30272 Len=0
Код: Выделить всё
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
19:43:34.319326 IP test.59768 > 10.8.0.1.domain: 47277+ A? radicale.local.company.ru. (45)
19:43:34.319495 IP 10.8.0.1.domain > test.59768: 47277 1/0/0 A 192.168.100.16 (61)
19:43:34.330784 IP test.49511 > 192.168.100.16.5232: Flags [S], seq 2979227019, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
19:44:03.376044 IP test > 192.168.100.16: ICMP echo request, id 1, seq 91, length 40
19:44:03.376398 IP 192.168.100.16 > test: ICMP echo reply, id 1, seq 91, length 40
19:44:04.400784 IP test.49512 > 192.168.100.16.5232: Flags [S], seq 92164152, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
19:44:04.401097 IP 192.168.100.16.5232 > test.49512: Flags [S.], seq 3726147706, ack 92164153, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 5], length 0
19:44:04.411816 IP test.49512 > 192.168.100.16.5232: Flags [.], ack 1, win 258, length 0
19:44:04.411933 IP test.49512 > 192.168.100.16.5232: Flags [P.], seq 1:295, ack 1, win 258, length 294
19:44:04.413335 IP 192.168.100.16.5232 > test.49512: Flags [.], ack 295, win 946, length 0
19:44:04.423763 IP test.49512 > 192.168.100.16.5232: Flags [P.], seq 295:551, ack 1, win 258, length 256
19:44:04.424114 IP 192.168.100.16.5232 > test.49512: Flags [.], ack 551, win 980, length 0
19:44:04.434723 IP 192.168.100.16.5232 > test.49512: Flags [P.], seq 1:551, ack 551, win 980, length 550
19:44:04.435074 IP 192.168.100.16.5232 > test.49512: Flags [F.], seq 551, ack 551, win 980, length 0
19:44:04.445374 IP test.49512 > 192.168.100.16.5232: Flags [.], ack 552, win 256, length 0
19:44:04.445506 IP test.49512 > 192.168.100.16.5232: Flags [F.], seq 551, ack 552, win 256, length 0
19:44:04.445632 IP 192.168.100.16.5232 > test.49512: Flags [.], ack 552, win 980, length 0
19:44:04.446859 IP test.49513 > 192.168.100.16.5232: Flags [S], seq 496510681, win 8192, options [mss 1352,nop,wscale 8,nop,nop,sackOK], length 0
19:44:04.447097 IP 192.168.100.16.5232 > test.49513: Flags [S.], seq 666817675, ack 496510682, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 5], length 0
Spoiler
local 192.168.100.34
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept secret
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.100.0 255.255.255.0"
client-config-dir ccd
learn-address /var/lib/openvpn/ovpn-learnaddress.sh
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 192.168.100.1"
push "dhcp-option WINS 10.8.0.1"
push "dhcp-option NBT 4"
client-to-client
keepalive 10 120
tls-auth easy-rsa/keys/ta.key 0 # This file is secret
cipher AES-128-CBC # AES
comp-lzo
max-clients 50
persist-key
persist-tun
crl-verify keys/crl.pem
port 1194
proto udp
dev tun
ca keys/ca.crt
cert keys/server.crt
key keys/server.key # This file should be kept secret
dh keys/dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 192.168.100.0 255.255.255.0"
client-config-dir ccd
learn-address /var/lib/openvpn/ovpn-learnaddress.sh
push "dhcp-option DNS 10.8.0.1"
push "dhcp-option DNS 192.168.100.1"
push "dhcp-option WINS 10.8.0.1"
push "dhcp-option NBT 4"
client-to-client
keepalive 10 120
tls-auth easy-rsa/keys/ta.key 0 # This file is secret
cipher AES-128-CBC # AES
comp-lzo
max-clients 50
persist-key
persist-tun
crl-verify keys/crl.pem
P.S. В начале поста написал, что проблема воспроизводится для части хостов, поясню. За OpenVPN-сервером, в его сети есть ещё одна машина, к которой подключаются клиенты, она на Windows 7. Так вот к ней коннект идёт успешно и без предварительных пингов с трассировками.