web-dev-qa-db-ja.com

Openvpn:クライアントはサーバーにpingできますが、サーバーはクライアントにpingできません

AWSとGoGridデータセンター間のopenvpnセットアップに奇妙な問題があります。私のネットワークはこのように見えます

/----------------\               /----------------\               /------------------\               /----------------\
|  VPS-DEVEL.gg  |               |    VPS-VPN.gg  |               |   VPS-VPN.aws    |               | VPS-PROVIS.aws |
| 10.160.64.7/24 | eth1 --- eth1 | 10.160.64.9/24 | tun0 --- tun0 | 10.160.48.219/24 | eth0 --- eth0 | 10.160.52.8/24 |
\----------------/               \----------------/               \------------------/               \----------------/

Awsからgogridに問題なくpingできます(両方のaws VMからのVPS-DEVEL.ggとVPS-VPN.ggの両方)が、gogridからAWSにpingできません。

VPS-VPN.ggのルーティングテーブルは次のようになります。

[root@VPSVPN ~]# route -n
Směrovací tabulka v jádru pro IP
Adresát         Brána           Maska           Přízn Metrik Odkaz  Užt Rozhraní
169.254.4.1     164.40.132.83   255.255.255.255 UGH   0      0        0 eth0
169.254.4.2     10.160.64.9     255.255.255.255 UGH   0      0        0 eth1
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
164.40.132.80   0.0.0.0         255.255.255.240 U     0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.240 UG    0      0        0 tun0
10.159.254.0    10.160.64.1     255.255.255.0   UG    0      0        0 eth1
10.160.64.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.160.0.0      10.8.0.2        255.255.192.0   UG    0      0        0 tun0
0.0.0.0         164.40.132.81   0.0.0.0         UG    0      0        0 eth0

VPS-VPN.awsのルーティングテーブル:

admin@ip-10-160-48-219:~$ Sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.160.48.1     0.0.0.0         UG    0      0        0 eth0
10.8.0.0        10.8.0.9        255.255.255.240 UG    0      0        0 tun0
10.8.0.9        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.160.48.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.160.64.0     10.8.0.9        255.255.255.0   UG    0      0        0 tun0
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

私のopenvpnサーバー構成(gogrid側):

[root@VPSVPN ~]# cat /etc/openvpn/server.conf
port 1194
proto udp
dev tun
ca ca.crt
cert vpsvpn.crt
key vpsvpn.key  # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.240
ifconfig-pool-persist ipp.txt
client-config-dir /etc/openvpn/ccd # ghor
client-to-client # ghor
keepalive 10 120
comp-lzo
user nobody
group nobody
persist-key
persist-tun
max-clients 100
status /var/log/openvpn-status.log
log-append  /var/log/openvpn.log
verb 11
route 10.160.0.0 255.255.192.0
Push "route 10.160.64.0 255.255.255.0"

私のopenvpnクライアント設定(aws側):

admin@ip-10-160-48-219:~$ cat /etc/openvpn/gogrid/gogrid.ovpn 
client
dev tun
proto udp
remote 164.40.132.83 1194
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
verb 3
ca /etc/openvpn/gogrid/ca.crt
cert /etc/openvpn/gogrid/test-eu-west-1-aws.crt
key /etc/openvpn/gogrid/test-eu-west-1-aws.key
askpass /etc/openvpn/gogrid/test-eu-west-1-aws.pass

TCPDumpはこれを示しています:

  1. Aws(両方のVM)からのpingはVPS-VPN.aws tun0インターフェイスでvpnトンネルに送られ、VPS-VPN.ggでtun0に送られ、応答は右に戻ります
  2. GogridからのpingはVPS-VPN.ggtun0インターフェイスでvpnトンネルに送られますが、VPS-VPN.awsのtun0インターフェイスに到達しませんでした
  3. Tun0(10.8.0.10)のVPS-VPN.ggからVPS-VPN.awsIPへのpingは正常に機能します

両方のVPS-VPNでip_forwardが有効になっています。

VPS-VPN.awsのIPTablesはこのように見えますが、AWSセキュリティグループはあらゆる場所からのすべてのトラフィックを許可するように設定されています(VMでiptablesを使用できる場合はSecGroupsを使用したくありません)。

admin@ip-10-160-48-219:~$ Sudo iptables -nvL
Chain INPUT (policy ACCEPT 867 packets, 68073 bytes)
 pkts bytes target        prot opt in     out     source            destination         
 1426  117K fail2ban-ssh  tcp  --  *      *       0.0.0.0/0         0.0.0.0/0            multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 1360  105K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 743 packets, 72322 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain fail2ban-ssh (1 references)
 pkts bytes target     prot opt in     out     source               destination         
 1400  115K RETURN     all  --  *      *       0.0.0.0/0            0.0.0.0/0          

admin@ip-10-160-48-219:~$ Sudo iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 1743 packets, 105K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain INPUT (policy ACCEPT 1359 packets, 69760 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 390 packets, 40130 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target      prot opt in     out     source              destination         
  748 67734 MASQUERADE  all  --  *      eth0    0.0.0.0/0           0.0.0.0/0           
   17  1428 MASQUERADE  all  --  *      tun0    0.0.0.0/0           0.0.0.0/0           

この範囲のサブネットを持つVPCが増えるという理由だけで、ルーティングに10.160.0.0/18を使用しています。各AWSVPCにはサブネット/ 21があります。すべてがGoGrid側のサブネット10.160.64.0/24にあり、awsルーティングテーブルは、このサブネットのすべてをVPS-VPN.awsインスタンスにルーティングするように設定されています。これは機能しています。AWSからGoGridにpingを実行できます。

どこを間違えているのか教えていただけますか?このセットアップAFAIKは、両方向で機能するはずです。どうもありがとう。

1

だから私は解決策を見つけました。クライアント間のルーティングが正しく構成されていませんでした。これを機能させるには、サーバー構成ファイルにclient-to-clientディレクティブがあり、client-config-dirディレクティブが適切に設定され、クライアントに接続するためにこのディレクトリにCCDファイルがなければなりません。

CCDファイルの名前は、クライアントが認証に使用している証明書接続の一般名と同じである必要があり、このファイルにクライアントネットワークのルーティングルールを追加する必要があります(私の場合)

iroute 10.160.0.0 255.255.192.0

この変更が行われた後、通信は両方向で完全に機能します。

0