OpenVPNを使用してパスをプッシュするのに問題があります。
私の設定は次のとおりです
ネットワーク
- 国土:10.0.0.0/24
- オープン VPN: 10.8.0.0/24
- インターネット上のVPS
サーバー(すべてLinux)
- サーバー1:10.0.0.13 + 10.8.0.1(OpenVPNサーバー)
- サーバー2:10.0.0.11(DHCP + DNS)
- VPS:インターネットIP + 10.8.0.X(OpenVPNの任意IP)
OpenVPN サーバーの構成
..snip..
push "route 10.0.0.0 255.255.255.0"
push "dhcp-option DNS 10.0.0.11"
..snip..
IP転送が有効
cat /proc/sys/net/ipv4/ip_forward
1
ルーティングされたVPS
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default www.xxx.yyy.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.0 10.8.0.5 255.255.255.0 UG 0 0 0 tun0
10.8.0.5 * 255.255.255.255 UH 0 0 0 tun0
www.xxx.yyy.1 * 255.255.255.255 UH 0 0 0 eth0
ルーティングサーバー1
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.0.0.1 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 * 255.255.255.0 U 0 0 0 eth0
10.8.0.0 10.8.0.2 255.255.255.0 UG 0 0 0 tun0
10.8.0.2 * 255.255.255.255 UH 0 0 0 tun0
VPSでopenvpn-server(10.8.0.1)をpingしてみてください。
ping 10.0.0.13
ping 10.0.0.13 -I tun0;#gives same result
VPS用tcpdump
tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
19:05:22.049141 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 1, length 64
19:05:22.101397 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 1, length 64
TCPダンプサーバー1
tcpdump -i tun0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
18:05:22.064139 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 1, length 64
18:05:22.064399 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 1, length 64
18:05:23.065687 IP 10.8.0.6 > 10.8.0.1: ICMP echo request, id 17966, seq 2, length 64
18:05:23.065886 IP 10.8.0.1 > 10.8.0.6: ICMP echo reply, id 17966, seq 2, length 64
機能しないのは、VPSからサーバー1の内部IPへの接続です。
VPSでopenvpn-server(10.0.0.13)をpingしてみてください。
VPS用tcpdump
19:12:24.847216 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 1, length 64
19:12:25.876441 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 2, length 64
19:12:26.900408 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 3, length 64
19:12:27.924476 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18136, seq 4, length 64
19:12:39.964724 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18137, seq 1, length 64
19:12:40.980446 IP vps.hoster.tld > 10.0.0.13: ICMP echo request, id 18137, seq 2, length 64
Server1のtcpdump
#stays empty
だから私はここで何が間違っているのか本当に知りたいです。私のVPSから内部IP 10.0.0.0/24へのトラフィックをブロックするものは何かを見つけるための次のステップは何ですか?たぶん家のファイアウォールがトラフィックをブロックしているのでしょうか?調べる方法?
答え1
内部インターフェイスに到達中、パスなし
デフォルトでは、LinuxはすべてのインターフェースのすべてのIPに応答し、「間違った」インターフェースからのARP要求にも応答します。これは非常に安全ではないため、ほとんどのファイアウォールはこの動作を防ぐためにiptablesとproc / arp_filterを使用します。
ルーティングをブロックするファイアウォールルールがある可能性があります。
server1> iptables -L -n -v
server1> iptables -t nat -L -n -v
server1> iptables -A FORWARD -j LOG
server1を介して、10.8と10.0の間にルーティングされたすべてのパケットが記録されます(dmesg)。それはあなたにいくつかの情報を与えるかもしれません。
$server1> iptables -D FORWARD -j LOG
ルールを削除します。
以下は、ファイアウォールルールの前にルーティングルールを挿入します。
server1> echo 1 > /proc/sys/net/ipv4/ip_forward
server1> iptables -I FORWARD 1 --in-interface tun0 --source 10.8.0.0/24 -j ACCEPT
server1> iptables -I FORWARD 1 --in-interface eth0 --source 10.0.0.0/24 -j ACCEPT
私はそれがうまくいくとは思わないが、VPS> ping 10.0.0.11
もしそうなら、問題はほぼ確実にserver1のiptablesにあります。
server1ポイントツーポイントルーティングを実行するため、ARPを実行しないでくださいが、どちらかが1に設定されている場合は、おそらくファイアウォールスクリプトによって実行され、問題はserver1のiptablesにあります。
server1> cat /proc/sys/net/ipv4/conf/all/arp_filter
server1> cat /proc/sys/net/ipv4/conf/tun0/arp_filter
路線
パスは問題ないようですが、この設定では10.8.0.0/24パスは必要ありません。 10.8.0.1〜10.8.0.5はポイントツーポイントです。
default gw
VPSには、10.8.0.1 via tun0
およびが必要です10.0.0.0/24 via gw 10.8.0.1
。 server1には、および、が
必要です。default gw
10.8.0.5 via tun0
10.0.0.0/24 via eth0