0

次のセットアップで、VPN を介してホスト「a」からホスト「c」に ping を送信しようとすると、ホスト b の tun0 インターフェイスで受信され、eth0 で転送されますが、その後消えます。ホスト c の eth0 インターフェイスには何も入っていません。最終的な結果は、ping が応答されないことです。ホスト b からホスト c に直接 ping を実行できます (ソース IP アドレスは、ホスト b と c が配置されているサブネット内に表示され、ホスト a の範囲は異なります (10.8.0.0/16))。

これをデバッグするにはどうすればよいですか? 何が問題になる可能性がありますか? トラフィックがハードウェアによって送信されたかどうかを検出するにはどうすればよいですか? (Linux ファイアウォールによってブロックされる可能性はありますか?)

設定:

ホスト(a) -> VPN(b) -> pingされるホスト(c)

ホスト a には eth0 インターフェイスがあります ホスト b には tun0 および eth0 インターフェイスがあります。ホスト c には eth0 インターフェイスがあります。

証拠:

on host a's tun0 interface 

> sudo tcpdump -i tun0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 65535 bytes
05:09:36.878793 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 611, length 64
05:09:37.884830 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 612, length 64


On host b's eth0 interface 

> sudo tcpdump -i eth0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
05:07:43.991961 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 499, length 64
05:07:44.997944 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 500, length 64

on host c's eth0 interface

> sudo tcpdump -i eth0 'icmp[icmptype] = icmp-echo or icmp[icmptype] = icmp-echoreply'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
<no output>
4

1 に答える 1

0

わかりました、数時間の調査の後にこれを理解しました。

問題は転送設定にあります。eth0 ポートに転送されるパケットには、ネットワーク内のホストの正しい送信元 IP アドレスがありません。IP アドレスは VPN からのものです。

05:07:43.991961 IP 10.8.0.6 > 10.10.146.8: ICMP echo request, id 3497, seq 499, length 64

Linux OS で (ルーター上で) NAT と同等のものを有効にすることで、これを切り替えることができます。

iptables -t nat -A POSTROUTING -o <eth0 or whatever else> -j MASQUERADE

これで問題は解決しました。

于 2013-07-13T19:09:44.600 に答える