これが私のインフラストラクチャです。
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要求は同じサーバーでからifvpn
にifpriv
送信されますが、ICMP要求パケットはそれ以上送信されないことを示しています。
iptablesにログを追加すると、ICMP要求パケットがドロップされずにPOSTROUTING状態になるが、その後パケットが宛先に到達しなかったことがわかります。ここで何が起こるかわかりません。
私は自分のパケットをマスカレードできることは知っていましたが、それが推奨されていないので(https://community.openvpn.net/openvpn/wiki/NatHack)、またはそれが私の非常に最後のソリューションになるので、私はしたくありません。
IIRC OpenVPNは、完全なサブネットにアクセスするために、ルーティングに加えて特別な構成が必要です。詳細を確認できるかどうかを確認します。
—
dirkt
pingがserver2に到達するには、server2のiptables INPUTを許可する必要があると思います。
—
Gohu
server2にPREROUTINGログを追加することをテストしましたが、何も表示されません。この画像i.stack.imgur.com/4wdkF.pngで説明されているように、パケットが入力する最初のチェーンはPREROUTINGであると想定しましたか?
—
ビクター
iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -o ifpriv -j MASQUERADE
たとえば、サーバー1で、クライアントからサーバー2のプライベートIPにpingを実行できます。しかし、NatHackページで説明されているようにThe authorities would see all the telephone calls as coming from you. It would be better if everyone got their own phone, so the calls could be routed directly.
。したがって、問題はまだここにあります...