
私は Linux と の初心者です。2 つのネットワーク インターフェイス (と)iptables
を持つ PC に Ubuntu Server ディストリビューション (12.04) をインストールしています。また、ラップトップが 2 台あり、1 台は に接続され、もう 1 台は に接続されています。eth0
eth1
eth0
eth1
ラップトップ1のipconfig: 172.16.221.120 - 255.255.252.0 ラップトップ2のipconfig: 192.168.222.250 - 255.255.255.0
ラップトップ1からラップトップ2に正常にpingを実行したい。
INPUT
ルールを作成する必要がありますかOUTPUT
? それともFORWARD
ルールも必要ですか?
これを試してみましたが、成功しませんでした:
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
答え1
tcpdump
ping がどのくらい遠くまで届くかを確認するには、次の方法を使用できます。
tcpdump -i eth0 -n icmp
tcpdump -i eth1 -n icmp
さらに、サーバー上で ping を許可するだけでは不十分です。ラップトップは、サーバー経由で他のラップトップに到達できることを認識できるように構成する必要があります (ルーティング)。
おそらく、ファイアウォールには応答パケットを許可するルールがあるでしょう。そうでない場合は、
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
どちらのラップトップも、おそらく他のラップトップに ping を送信できるようにしたいので、これは理にかなっています。ただし、これを ping と pong に制限することもできます。
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-request -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -p icmp --icmp-type echo-reply -j ACCEPT
最後の問題はラップトップ自体にあります。ラップトップの少なくとも 1 台に独自のファイアウォールがある場合、ping がブロックされる可能性があります (一般的な場合、またはインターフェイス ネットワーク外の送信元アドレスが原因の場合)。
答え2
デフォルトでは、netfilter チェーンはACCEPT
デフォルト ポリシーで空なので、ルールは必要ありません。すでにルールを追加している場合は、ping を許可するにはチェーンにルールを追加する必要がありますFORWARD
。
また、サーバーをルーターとして設定し、各ラップトップのデフォルト ルートとしてサーバーが設定されていることを確認する必要があります (または、少なくとも他のラップトップのサブネットへのルートが設定されている必要があります)。
ルーティング (IP 転送) を有効にするには、/proc/sys/net/ipv4/ip_forward
に設定する必要があります。Ubuntu には、 で項目を自動的に設定できる場所1
があります。/etc/sysctl.conf
/proc/sys
# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1
これを変更する場合は、変更をカーネルにロードする必要があります。
sudo sysctl -p /etc/sysctl.conf
変更は次回の起動時に自動的に読み込まれるため、変更後にこのコマンドを手動で 1 回だけ実行する必要があります/etc/sysctl.conf
。