iptables ルール - 入力と出力

iptables ルール - 入力と出力

私は Linux と の初心者です。2 つのネットワーク インターフェイス (と)iptablesを持つ PC に Ubuntu Server ディストリビューション (12.04) をインストールしています。また、ラップトップが 2 台あり、1 台は に接続され、もう 1 台は に接続されています。eth0eth1eth0eth1

ラップトップ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

tcpdumpping がどのくらい遠くまで届くかを確認するには、次の方法を使用できます。

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

関連情報