
私はLinuxで、iptables
私のPCには2つのネットワークインターフェース(そして私も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
laptop1からlaptop2にうまく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
ACCEPT
デフォルトでは、デフォルトポリシーを含むnetfilterチェーンが空であるため、ルールは必要ありません。すでにルールを追加している場合は、pingを通過させるにはルールをFORWARD
チェーンに追加する必要があります。
また、サーバーをルーターとして設定し、各ラップトップにサーバーがデフォルトのパスであることを確認する必要があります(または少なくとも他のラップトップのサブネットへのパスがあるかどうか)。
/proc/sys/net/ipv4/ip_forward
ルーティング(IP転送)を有効にするには、に設定する必要があります1
。 Ubuntuには/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
変更は次回の起動時に自動的にロードされるため、変更後にこのコマンドを手動で一度だけ実行できます/etc/sysctl.conf
。