Назад | Перейти на главную страницу

AWS VPC в сеть Office с OpenVPN

У меня есть сервер 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 на обоих убунту и точка доступа чтобы проверить, куда идут пакеты.

  1. Убедитесь, что пакеты ping приходят с хоста 1. Если нет, проверьте Группа безопасности и EC2 Src / Dst проверка

    [aws ubuntu] # tcpdump -i ens5 -nn icmp
    
  2. Убедитесь, что пакеты идут в туннель OpenVPN. Если нет, проверьте убунтумежсетевой экран iptables.

    [aws ubuntu] # tcpdump -i tun0 -nn icmp
    
  3. Убедитесь, что пакеты прибывают в туннель к точке доступа.

    [office accesspoint] # tcpdump -i tun0 -nn icmp
    
  4. Убедитесь, что они перенаправляются из туннеля в Wi-Fi. Если нет, проверьте брандмауэр на точке доступа.

    [office accesspoint] # tcpdump -i br0 -nn icmp
    

Обновить на основании дополнительной информации ...

Когда я пингую IP-адрес 10.24.11.0/24 с хоста 1 я вижу пакеты, идущие в туннель на сервере OpenVPN sudo tcpdump -i tun0 -nn icmp но не выходит из туннеля на OpenVPN Client sudo tcpdump -i tun0 -nn icmp

Странно. Это звучит как точка доступабрандмауэр может блокировать входящие пакеты VPN от убунту.

Можете ли вы попробовать добавить это одно правило в брандмауэр точки доступа:

iptables -I INPUT -s {aws-ubuntu-public-ip} -j ACCEPT

Надеюсь, это поможет :)