У меня есть сервер OpenVPN, работающий в AWS VPC, и я могу подключать локальный сервер к AWS с помощью клиента OpenVPN.
Возможность проверки связи с экземплярами, запущенными в AWS VPC. Но не может проверить связь с локальным сервером из EC2. Вот диаграмма.
(Office Network) 10.24.11.1/24 (AWS VPC) 10.2.0.0/16 +--------------------------------------------+ +----------------------------------+ | | | | | OpenVPN Client (Pi) | | OpenVPN Server (Ubuntu) | | | | | | +--------------------------+ | | +--------------------------+ | | | | | | | | | | eth0 | | |tun0 | | | | | <--+-->| 10.8.0.2|<--|--+----|->|10.8.0.1 10.2.2.101 |ens5| | | | | | | | | | br0 |10.24.11.15 | | | | | | | | | | | | | | | | wlan0 | | | | | | | +--------------------------+ | | +--------------------------+ | | ^ | | | | | | | | | WiFi Client | | | | | +------------------+ | | | +----------+ | | |wlan0:10.24.11.201| | | | | Host 1 | | | | |--+ | | | | | | +------------------+ | | |10.2.1.145| | +--------------------------------------------+ | +----------+ | +----------------------------------+
OpenVPN Server
маршрут:
ubuntu@openvpn:~$ ip route
default via 10.2.2.1 dev ens5 proto dhcp src 10.2.2.101 metric 100
10.2.2.0/24 dev ens5 proto kernel scope link src 10.2.2.101
10.2.2.1 dev ens5 proto dhcp scope link src 10.2.2.101 metric 100
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.1
10.24.11.0/24 via 10.8.0.2 dev tun0 proto static src 10.8.0.1
OpenVPN Client
маршрут:
pi@accesspoint:~ $ ip route
default via 10.24.11.1 dev br0 src 10.24.11.15 metric 203
10.2.0.0/16 via 10.8.0.1 dev tun0 proto static src 10.8.0.2
10.8.0.0/24 dev tun0 proto kernel scope link src 10.8.0.2
10.24.11.0/24 dev br0 proto kernel scope link src 10.24.11.15 metric 203
35.176.225.61 via 10.24.11.1 dev br0
WiFi Client
маршрут:
pi@client:~ $ ip route
default via 10.24.11.1 dev wlan0 src 10.24.11.201 metric 303
10.2.0.0/16 via 10.24.11.15 dev wlan0 proto static
10.24.11.0/24 dev wlan0 proto kernel scope link src 10.24.11.201 metric 303
Добавлен маршрут для 10.24.11.0/24
& 10.8.0.1/16
указать на OpenVPN Server
частный IP в таблице маршрутов VPC.
Также есть net.ipv4.ip_forward=1
в /etc/sysctl.conf
на сервере OpenVPN и клиенте OpenVPN.
Я могу пинговать любой IP-адрес подсети 10.2.0.0/16
из OpenVPN Client
& WiFi Client
, но не может пинговать ни один IP-адрес подсети 10.24.11.0/24
из 10.2.0.0/16
.
Правила брандмауэра на OpenVPN server
:
ubuntu@openvpn:~$ sudo iptables --list
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Если я пингую IP-адрес OpenVPN сервер 10.2.2.101
& IP-адрес VPN-туннеля 10.8.0.1
из Хост 1 Я вижу пакеты с sudo tcpdump -i ens5 -nn icmp
Итак, добавлен маршрут для 10.24.11.0/24
& 10.8.0.1/16
указать на OpenVPN Server
частный IP-адрес в таблице маршрутов VPC не работает.
После отключения проверки источника / назначения OpenVPN Server
Мне удалось пропинговать IP-адрес 10.8.0.0/24
из 10.2.0.0/16
. Но нет 10.24.11.0/24
.
Когда я пингую IP-адрес 10.24.11.0/24
с хоста 1 я вижу, что пакеты входят в туннель на OpenVPN сервер sudo tcpdump -i tun0 -nn icmp
но не выходит из туннеля на OpenVPN Client sudo tcpdump -i tun0 -nn icmp
Обновить
Я побежал sudo iptables -I INPUT -s {OpenVPN-Server-Public-IP} -j ACCEPT
, на OpenVPN Client
затем попытался ping 10.24.11.15
из Host 1
. Возможность видеть пакеты, идущие в туннель на сервере OpenVPN
ubuntu@openvpn:~$ sudo tcpdump -i tun0 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
09:38:42.344238 IP 10.2.2.46 > 10.24.11.15: ICMP echo request, id 12967, seq 203, length 64
09:38:43.344222 IP 10.2.2.46 > 10.24.11.15: ICMP echo request, id 12967, seq 204, length 64
09:38:44.344280 IP 10.2.2.46 > 10.24.11.15: ICMP echo request, id 12967, seq 205, length 64
Но пакет не выходит из туннеля на сервере клиента OpenVPN
pi@accesspoint:~ $ sudo tcpdump -i tun0 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
Когда я пингую Host 1
из OpenVPN Client работает:
pi@accesspoint:~ $ ping 10.2.2.46
PING 10.2.2.46 (10.2.2.46) 56(84) bytes of data.
64 bytes from 10.2.2.46: icmp_seq=1 ttl=63 time=72.5 ms
64 bytes from 10.2.2.46: icmp_seq=2 ttl=63 time=72.4 ms
64 bytes from 10.2.2.46: icmp_seq=3 ttl=63 time=72.4 ms
следующий tcpdump:
ubuntu@openvpn:~$ sudo tcpdump -i tun0 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
16:47:06.002682 IP 10.8.0.2 > 10.2.2.46: ICMP echo request, id 2807, seq 1, length 64
16:47:06.003034 IP 10.2.2.46 > 10.8.0.2: ICMP echo reply, id 2807, seq 1, length 64
16:47:07.003467 IP 10.8.0.2 > 10.2.2.46: ICMP echo request, id 2807, seq 2, length 64
16:47:07.003799 IP 10.2.2.46 > 10.8.0.2: ICMP echo reply, id 2807, seq 2, length 64
16:47:08.004003 IP 10.8.0.2 > 10.2.2.46: ICMP echo request, id 2807, seq 3, length 64
16:47:08.004353 IP 10.2.2.46 > 10.8.0.2: ICMP echo reply, id 2807, seq 3, length 64
и из Host 1
:
ubuntu@host-1:~$ sudo tcpdump -i eth0 -nn icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
20:47:06.001635 IP 10.2.2.101 > 10.2.2.46: ICMP echo request, id 2807, seq 1, length 64
20:47:06.001694 IP 10.2.2.46 > 10.2.2.101: ICMP echo reply, id 2807, seq 1, length 64
20:47:07.002398 IP 10.2.2.101 > 10.2.2.46: ICMP echo request, id 2807, seq 2, length 64
20:47:07.002445 IP 10.2.2.46 > 10.2.2.101: ICMP echo reply, id 2807, seq 2, length 64
20:47:08.002915 IP 10.2.2.101 > 10.2.2.46: ICMP echo request, id 2807, seq 3, length 64
20:47:08.002961 IP 10.2.2.46 > 10.2.2.101: ICMP echo reply, id 2807, seq 3, length 64
iptables-save
из OpenVPN Server
:
ubuntu@openvpn:~$ sudo iptables-save
# Generated by iptables-save v1.6.1 on Tue Aug 13 17:01:18 2019
*filter
:INPUT ACCEPT [83032:54462790]
:FORWARD ACCEPT [3756:403911]
:OUTPUT ACCEPT [84053:7826032]
-A FORWARD -i ens5 -o tun0 -j ACCEPT
-A FORWARD -i ens5 -o tun0 -j ACCEPT
COMMIT
# Completed on Tue Aug 13 17:01:18 2019
# Generated by iptables-save v1.6.1 on Tue Aug 13 17:01:18 2019
*nat
:PREROUTING ACCEPT [2350:165593]
:INPUT ACCEPT [276:21608]
:OUTPUT ACCEPT [12682:1773625]
:POSTROUTING ACCEPT [12672:1773673]
-A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to-source 10.2.2.101
COMMIT
# Completed on Tue Aug 13 17:01:18 2019
Я могу пинговать любой IP-адрес подсети 10.2.0.0/16 из OpenVPN Client и WiFi Client, но не могу пинговать ни один IP-адрес подсети 10.24.11.0/24 из 10.2.0.0/16.
Это говорит о том, что ваша маршрутизация верна, но, скорее всего, у вас проблемы с брандмауэрами. Удостоверься что:
брандмауэр на убунту разрешает новые подключения от VPC к Office. Для начала нужно сделать что-то вроде этого:
iptables -I FORWARD -i ens5 -o tun0 -j ACCEPT
брандмауэр на точка доступа разрешает новые подключения от туннеля к Wi-Fi.
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
Если по-прежнему не работает, начните пинговать с Хост AWS 1 к Клиент Wi-Fi и использовать tcpdump
на обоих убунту и точка доступа чтобы проверить, куда идут пакеты.
Убедитесь, что пакеты ping приходят с хоста 1. Если нет, проверьте Группа безопасности и EC2 Src / Dst проверка
[aws ubuntu] # tcpdump -i ens5 -nn icmp
Убедитесь, что пакеты идут в туннель OpenVPN. Если нет, проверьте убунтумежсетевой экран iptables.
[aws ubuntu] # tcpdump -i tun0 -nn icmp
Убедитесь, что пакеты прибывают в туннель к точке доступа.
[office accesspoint] # tcpdump -i tun0 -nn icmp
Убедитесь, что они перенаправляются из туннеля в Wi-Fi. Если нет, проверьте брандмауэр на точке доступа.
[office accesspoint] # tcpdump -i br0 -nn icmp
Обновить на основании дополнительной информации ...
Когда я пингую IP-адрес
10.24.11.0/24
с хоста 1 я вижу пакеты, идущие в туннель на сервере OpenVPNsudo tcpdump -i tun0 -nn icmp
но не выходит из туннеля на OpenVPN Clientsudo tcpdump -i tun0 -nn icmp
Странно. Это звучит как точка доступабрандмауэр может блокировать входящие пакеты VPN от убунту.
Можете ли вы попробовать добавить это одно правило в брандмауэр точки доступа:
iptables -I INPUT -s {aws-ubuntu-public-ip} -j ACCEPT
Надеюсь, это поможет :)