Linux

無法連接到 vpn 網路中的成員伺服器,反之亦然,但為什麼?

  • July 20, 2017

我在 AWS 中為 OpenVPN 概念驗證創建了一個測試 VPC。

在這個 VPC 中,我使用了來自 AWS Marketplace 的 linux 成員伺服器和 OpenVPN 伺服器 AMI,安裝並配置了它。

作為客戶端,我可以ssh使用它的 3 個 ip 中的每一個連接到 VPN 網路並進入 OpenVPN 伺服器,但問題是我無法ssh進入 VPC 主子網中的成員伺服器。

OpenVPN 伺服器和成員伺服器之間的網路已完全建立。

詳情如下:

VPC CIDR: 172.16.0.0/16
VPC Main Subnet CIDR: 172.16.200.0/24 
VPN CIDR: 172.16.201.0/24

OVPN server: 
Main Subnet interface: 172.16.200.66
VPN Server interface: 172.16.201.1
VPN Client interface: 172.16.201.129

Member server:
Main Subnet interface: 172.16.200.71

My Client IP: 172.16.201.131-134 (disconnected a few times)

我已經像這樣配置了 OpenVPN 伺服器: 並且:在此處輸入圖像描述

在此處輸入圖像描述

此外,我嘗試過使用 NAT,但無濟於事。

當我tcpdump在嘗試ssh從客戶端機器到成員伺服器時從 OVPN 伺服器執行時:

openvpnas@openvpnas2:~$ sudo tcpdump -i as0t1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on as0t1, link-type RAW (Raw IP), capture size 262144 bytes
11:21:52.668974 IP 172.16.201.131.59009 > 172.16.200.71.ssh: Flags [SEW], seq 2266158529, win 65535, options [mss 1252,nop,wscale 5,nop,nop,TS val 758529356 ecr 0,sackOK,eol], length 0
11:21:53.681875 IP 172.16.201.131.59009 > 172.16.200.71.ssh: Flags [S], seq 2266158529, win 65535, options [mss 1252,nop,wscale 5,nop,nop,TS val 758530357 ecr 0,sackOK,eol], length 0

我可以看到 OVPN 伺服器正在嘗試將數據包轉發到成員伺服器,但是在成員伺服器tcpdump的介面上執行時,我看到沒有數據包到達。

OVPN伺服器上的路由:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0
172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.201.0    0.0.0.0         255.255.255.128 U     0      0        0 as0t0
172.16.201.128  0.0.0.0         255.255.255.128 U     0      0        0 as0t1

成員伺服器上的路由:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.200.1    0.0.0.0         UG    0      0        0 eth0
172.16.200.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.16.201.0    172.16.200.66   255.255.255.0   UG    0      0        0 eth0

客戶端(我的筆記型電腦)上的路由,其中​​一些是我手動添加的:

netstat -nr | grep tun
172.16.200/24      172.16.201.134     UGSc            4        4   utun2
172.16.201/24      172.16.200.66      UGSc            1        2   utun2
172.16.201.134     172.16.201.134     UH              3        4   utun2

OVPN 伺服器上的網路介面:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 02:fb:99:4a:67:04 brd ff:ff:ff:ff:ff:ff
   inet 172.16.200.66/24 brd 172.16.200.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::fb:99ff:fe4a:6704/64 scope link
      valid_lft forever preferred_lft forever
3: pr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
   link/ether 36:ce:f1:ac:59:42 brd ff:ff:ff:ff:ff:ff
   inet6 fe80::34ce:f1ff:feac:5942/64 scope link
      valid_lft forever preferred_lft forever
21: as0t0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 200
   link/none
   inet 172.16.201.1/25 brd 172.16.201.127 scope global as0t0
      valid_lft forever preferred_lft forever
22: as0t1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 200
   link/none
   inet 172.16.201.129/25 brd 172.16.201.255 scope global as0t1
      valid_lft forever preferred_lft forever

成員伺服器上的網路介面:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 02:c5:62:3b:ef:02 brd ff:ff:ff:ff:ff:ff
   inet 172.16.200.71/24 brd 172.16.200.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::c5:62ff:fe3b:ef02/64 scope link
      valid_lft forever preferred_lft forever

還有幾點:

ping從我的客戶端到成員伺服器:

$ ping 172.16.200.71
PING 172.16.200.71 (172.16.200.71): 56 data bytes
Request timeout for icmp_seq 0

ping從我的客戶端到 OVPN 伺服器(使用 VPC 主子網):

$ ping 172.16.200.66
PING 172.16.200.66 (172.16.200.66): 56 data bytes
64 bytes from 172.16.200.66: icmp_seq=0 ttl=64 time=87.657 ms

ping從我的客戶端到 OVPN vpn ip 也可以。

此 VPC 在 AWS 中的路由表: 在此處輸入圖像描述

這些是我的問題:

  1. 我應該在 VPC 中創建一個“172.16.201.0”子網(vpn 子網)嗎?(我有,但它沒有解決問題……這只是我嘗試過的事情之一)。
  2. 好像我錯過了一些東西,也許在 AWS 的配置中,你能試著找出我的問題嗎?

我能想到 3 件事你可以看看

  1. 就目前而言,172.16.0.0/16 CIDR 範圍內的任何內容都將通過本地路由進行路由,其他 0.0.0.0/0 將通過網際網路網關發送。因為您的 VPN 子網屬於 172.16.0.0/16 範圍,這可能會導致問題。或許:

一種。為您的 VPN 子網選擇不同的地址範圍

灣。確保路由表中有一條通過 VPN 設備將流量路由到該子網的路由

  1. 您是否查看過與您的 EC2 實例相關聯的安全組?他們是否允許您想要流向那些 EC2 實例的正確流量(在本例中為 SSH)
  2. 您是否查看過連結到您的 VPC 及其子網的網路 ACL,它們是否允許正確的入站和出站流量?

引用自:https://serverfault.com/questions/863032