私のネットワークトポロジー:
マック 192.168.1.4 | インターネット - netcom 192.168.1.1-192.168.1.253 linux 192.168.2.1-192.168.2.2 windows
- netcomはインターネットへのNATゲートウェイです
- netcom は 192.168.1.253 経由で 192.168.2.0/24 への静的ルートを持っています。
- mac には 192.168.1.253 経由で 192.168.2.0/24 への静的ルートがあります。
- MacのデフォルトのGWは192.168.1.1です
- Linux のデフォルトの gw は 192.168.1.1 です
- Linuxではポート転送とファイアウォールが無効になっています
- Windows のデフォルトの gw は 192.168.2.1 です
- MacはWindows、Linux、Netcomにpingできる
- LinuxはWindows、Mac、Netcomにpingを実行できる
- Windows は Mac と Linux に ping できるが、Netcom にはできない
- netcom は Mac と Linux に ping できるが、Windows にはできない
最後に、Windows から netcom に ping を実行しようとしながら (またはその逆) tcpdump を実行したところ、パケットが正しいインターフェイスを通過していることが示されました。何が問題なのか、何かお分かりですか?
netcom から Windows への ping を実行すると、次のログが表示されます。
ネットコムでのping:
> 192.168.2.2にpingする アプリ: echo 1 > /var/ping_dns_status PING 192.168.2.2 (192.168.2.2): 56データバイト --- 192.168.2.2 ping 統計 --- 送信パケット 4 個、受信パケット 0 個、パケット損失 100%
Linux での tcpdump:
00:03:12.441283 18:f1:45:75:2c:24 イーサタイプ IPv4 (0x0800)、長さ 100: 192.168.1.1 > 192.168.2.2: ICMP エコー要求、ID 5784、シーケンス 0、長さ 64 00:03:12.441341 送信 00:0c:29:0b:03:c3 イーサタイプ IPv4 (0x0800)、長さ 100: 192.168.1.1 > 192.168.2.2: ICMP エコー要求、ID 5784、シーケンス 0、長さ 64 00:03:12.441829 00:0c:29:e9:17:84 イーサタイプ IPv4 (0x0800)、長さ 100: 192.168.2.2 > 192.168.1.1: ICMP エコー応答、ID 5784、シーケンス 0、長さ 64 00:03:12.441850 送信 00:0c:29:0b:03:b9 イーサタイプ IPv4 (0x0800)、長さ 100: 192.168.2.2 > 192.168.1.1: ICMP エコー応答、ID 5784、シーケンス 0、長さ 64
Windows 上の Wireshark:
192.168.1.1 192.168.2.2 ICMP 98 エコー (ping) 要求 id=0x1698、seq=0/0、ttl=63 (応答は 2548) 192.168.2.2 192.168.1.1 ICMP 98 エコー (ping) 応答 id=0x1698、seq=0/0、ttl=128 (要求は 2547)
答え1
Linux マシンでは、パケット転送はデフォルトで無効になっています。次のコマンドを実行してみてください:
iptables -A 転送 -i eth1 -j 受け入れ
iptables -A 転送 -o eth1 -j 受け入れ
(eth1 の代わりに別のネットワーク インターフェイスで同じ 2 つのコマンドを実行します)
sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.confに追加します
ネット.ipv4.ip_forward = 0