Нет подключения к клиентской сети через соединение OpenVPN site-to-site.
Я пытаюсь соединить два своих дома (а может быть, и больше позже) через соединение OpenVPN типа «сайт-сайт». Моя цель — чтобы все клиенты на всех сайтах могли общаться друг с другом.
Но по какой-то причине мне не удается установить соединение с сайта А с клиентами на сайте Б. И наоборот, все работает отлично.
Есть ли у меня ошибка в конфигурации OpenVPN?
Я забыл указать какие-нибудь маршруты?
Любая помощь очень ценится.
Ситуация
Вот как выглядит установка:
Сайт А
- Интернет-модем/маршрутизатор
- Порт OpenVPN перенаправлен в Unifi USG
- Unifi USG в качестве маршрутизатора/DHCP
- Сеть:
192.168.200.1/24
- подключен через порт WAN к модему/маршрутизатору интернет-провайдера
- OpenVPN-порт
1194
пересылается на Synology NAS - Статический маршрут к Synology NAS
- Сеть:
- Synology NAS с фиксированным IP-адресом
- Сервер OpenVPN с использованием пакета Synology VPN Server
- Сеть серверов OpenVPN:
10.0.10.0/24
Сайт Б
- Интернет-модем/маршрутизатор
- Роутер ASUS RT-AC68U с прошивкой merlin
- Сеть:
192.168.100.1/24
- подключен через порт WAN к модему/маршрутизатору интернет-провайдера
- Сеть:
- Клиент OpenVPN подключается к серверу Site A/OpenVPN
- IP-адрес клиента
10.0.10.6
в этом примере. Я также пробовал фиксированные IP-адреса, но это не изменило результат.
- IP-адрес клиента
Дополнительные устройства
- больше клиентов смогут подключаться через OpenVPN, и им будут назначены IP-адреса в диапазоне
10.0.10.x
Проблема
✅ Соединение OpenVPN успешно установлено.
✅ Маршрутизатор сайта Б () может пинговать сервер OpenVPN сайта А ()
✅ Маршрутизатор сайта B () может пинговать маршрутизатор сайта A ()
✅ Маршрутизатор сайта B () может пинговать клиентов сайта A (например)
✅ Клиент сайта Б (например) может пинговать сервер OpenVPN сайта А (
192.168.200.200
)✅ Клиент сайта B (например) может пинговать маршрутизатор сайта A ()
✅ Клиент сайта Б (например) может пинговать клиентов сайта А (например)
✅ Маршрутизатор сайта A () может пинговать маршрутизатор сайта B ()
❌ Сайт A Маршрутизатор (
192.168.200.1
) не может пинговать клиентов сайта B (например,192.168.100.10
)✅ Клиент сайта A (например) может пинговать маршрутизатор сайта B ()
❌ Клиент сайта A (например) не может выполнить проверку связи с клиентами сайта B (например)
я уже пытался бежатьtcpdump -eni any icmp
на маршрутизаторе сайта B.
Когда я пингую маршрутизатор сайта B (192.168.100.1
) с сайта Клиент (), работает:
21:33:04.416012 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.1: ICMP echo request, id 1038, seq 1, length 64
21:33:04.416165 Out ethertype IPv4 (0x0800), length 100: 192.168.100.1 > 192.168.200.6: ICMP echo reply, id 1038, seq 1, length 64
21:33:05.418067 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.1: ICMP echo request, id 1038, seq 2, length 64
21:33:05.418147 Out ethertype IPv4 (0x0800), length 100: 192.168.100.1 > 192.168.200.6: ICMP echo reply, id 1038, seq 2, length 64
21:33:06.419075 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.1: ICMP echo request, id 1038, seq 3, length 64
21:33:06.419153 Out ethertype IPv4 (0x0800), length 100: 192.168.100.1 > 192.168.200.6: ICMP echo reply, id 1038, seq 3, length 64
Однако когда я пингую клиента сайта B () с клиента сайта A (), он терпит неудачу :
21:37:08.038559 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.129: ICMP echo request, id 1039, seq 1, length 64
21:37:09.070567 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.129: ICMP echo request, id 1039, seq 2, length 64
21:37:10.110696 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.129: ICMP echo request, id 1039, seq 3, length 64
21:37:11.150865 In ethertype IPv4 (0x0800), length 100: 192.168.200.6 > 192.168.100.129: ICMP echo request, id 1039, seq 4, length 64
И наоборот, когда я пингую сайт клиента (192.168.200.6
) от клиента сайта Б (192.168.100.129
), оно работает :
21:39:11.565543 In bc:5f:f4:63:a9:46 ethertype IPv4 (0x0800), length 76: 192.168.100.129 > 192.168.200.6: ICMP echo request, id 1, seq 230, length 40
21:39:11.565543 In bc:5f:f4:63:a9:46 ethertype IPv4 (0x0800), length 76: 192.168.100.129 > 192.168.200.6: ICMP echo request, id 1, seq 230, length 40
21:39:11.565665 Out ethertype IPv4 (0x0800), length 76: 10.0.10.6 > 192.168.200.6: ICMP echo request, id 1, seq 230, length 40
21:39:11.573657 In ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 10.0.10.6: ICMP echo reply, id 1, seq 230, length 40
21:39:11.573715 Out 60:45:cb:59:fd:d0 ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 192.168.100.129: ICMP echo reply, id 1, seq 230, length 40
21:39:11.573736 Out 60:45:cb:59:fd:d0 ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 192.168.100.129: ICMP echo reply, id 1, seq 230, length 40
21:39:12.584996 In bc:5f:f4:63:a9:46 ethertype IPv4 (0x0800), length 76: 192.168.100.129 > 192.168.200.6: ICMP echo request, id 1, seq 231, length 40
21:39:12.584996 In bc:5f:f4:63:a9:46 ethertype IPv4 (0x0800), length 76: 192.168.100.129 > 192.168.200.6: ICMP echo request, id 1, seq 231, length 40
21:39:12.585099 Out ethertype IPv4 (0x0800), length 76: 10.0.10.6 > 192.168.200.6: ICMP echo request, id 1, seq 231, length 40
21:39:12.592692 In ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 10.0.10.6: ICMP echo reply, id 1, seq 231, length 40
21:39:12.592751 Out 60:45:cb:59:fd:d0 ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 192.168.100.129: ICMP echo reply, id 1, seq 231, length 40
21:39:12.592777 Out 60:45:cb:59:fd:d0 ethertype IPv4 (0x0800), length 76: 192.168.200.6 > 192.168.100.129: ICMP echo reply, id 1, seq 231, length 40
Конфигурация сервера OpenVPN
(Synology NAS/usr/syno/etc/packages/VPNCenter/openvpn/openvpn.conf
)
dev tun
# make all clients aware of local site
push "route 192.168.200.0 255.255.255.0"
push "route 10.0.10.0 255.255.255.0"
# forward routes to other sites
route 192.168.100.0 255.255.255.0
push "route 192.168.100.0 255.255.255.0"
management /var/run/openvpn.sock unix
server 10.0.10.0 255.255.255.0
client-config-dir /usr/syno/etc/packages/VPNCenter/userIPs/
client-to-client
dh /var/packages/VPNCenter/target/etc/openvpn/keys/dh3072.pem
ca /var/packages/VPNCenter/target/etc/openvpn/keys/ca.crt
cert /var/packages/VPNCenter/target/etc/openvpn/keys/server.crt
key /var/packages/VPNCenter/target/etc/openvpn/keys/server.key
max-clients 5
comp-lzo
persist-tun
persist-key
verb 3
#log-append /var/log/openvpn.log
keepalive 10 60
reneg-sec 0
plugin /var/packages/VPNCenter/target/lib/radiusplugin.so /var/packages/VPNCenter/target/etc/openvpn/radiusplugin.cnf
verify-client-cert none
username-as-common-name
duplicate-cn
status /tmp/ovpn_status_2_result 30
status-version 2
proto udp6
mssfix 1450
port 1194
cipher AES-256-CBC
auth SHA512
У меня есть каталог конфигурации клиента с файлом для моего пользователя VPN:
(Synology NAS/usr/syno/etc/packages/VPNCenter/userIPs/<vpn user name for site b>
)
# set static ip address for this client
#ifconfig-push 10.0.10.100 255.255.255.0
# make server aware that the 192.168.100.0/24 address range is handled by this client
iroute 192.168.100.0 255.255.255.0
Файл клиента OpenVPN
dev tun
tls-client
remote <site A dynamic host name> 1194
float
#redirect-gateway def1
dhcp-option DNS 192.168.200.1
pull
proto udp
script-security 2
comp-lzo
reneg-sec 0
cipher AES-256-CBC
auth SHA512
auth-user-pass
setenv CLIENT_CERT 0
<ca>
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
</ca>
Обновление: вот как USG (маршрутизатор на сайте A) настроен для маршрутизации трафика на Synology.
Обновление: таблица маршрутизации на Synology. Я не добавлял здесь никаких маршрутов, они были добавлены автоматически сервером OpenVPN.