これが私のインフラストラクチャです:
dns of mydomain.com:
vpn A 90.90.90.1
vpn A 90.90.90.2
client vpn config:
client
dev tun
proto udp
nobind
remote vpn.mydomain.com 1394
server1
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.1.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.1/24
ifpriv: 10.90.90.1/24
ifvpn: 10.10.1.1/24
routes:
10.10.1.0/24 src 10.10.1.1 dev ifvpn
10.10.2.0/24 via 10.90.90.2 dev ifpriv
server2
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.2.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.2/24
ifpriv: 10.90.90.2/24
ifvpn: 10.10.2.1/24
routes:
10.10.1.0/24 via 10.90.90.1 dev ifpriv
10.10.2.0/24 src 10.10.2.1 dev ifvpn
問題は、クライアントから接続している OpenVPN サーバーに ping できるが、10.90.90.0/24 サブネット内の他のサーバーに ping できないことです。
tcpdump
ICMP 要求が同じサーバー上で から に送信されるが、その後 ICMP 要求パケットはそれ以上送信されないことを示していifvpn
ますifpriv
。
iptables にログを追加すると、ICMP 要求パケットがドロップされることなく POSTROUTING 状態になるものの、その後パケットが宛先に到達しなかったこともわかります。ここで何が起こっているのかわかりません。解決策がありません。
パケットをマスカレードできることは知っていますが、推奨されていないのでやりたくありません(https://community.openvpn.net/openvpn/wiki/NatHack)、そうしないと、それが私の最後の解決策になります。
答え1
リモート サーバーが「サブネットを公開する」場合は、OpenVPN ドキュメントで詳しく説明されているように、ディレクティブccd
を含むファイルを含むディレクトリが必要です。また、クライアントにプッシュされるディレクティブも必要です。iroute
route
すべてが正常に動作している場合:
- クライアントがpingを送信します。
- クライアントの OS には、このトラフィックをローカルの OpenVPN サーバーに送信するルーティング コマンドがあります。
- この
ccd
情報はOpenVPNに接続されたリモコン配信のためにトラフィックを送信します。 - 交通はこのリモートから始まり、目的地まで進みます。
- 復路では、リモートシステムはまたトラフィックを戻すオペレーティングシステムルートがあるそのOpenVPN サーバー。