
私はLinuxに初めてアクセスし、私の環境で何かをテストしたいと思います。
2つのネットワークを接続するためにLinuxサーバー(fedora)を設定しました。
サーバーには3番目のネットワークカードがあります(virtualboxを介してホストと共有)。
Linuxサーバーで正常に移動できますが、クライアントで8.8.8.8または同様のpingを試しても機能しません。
クライアントのデフォルトルーティングはiptablesでicmpを許可します。
私は何を見逃していますか?
答え1
上記のように、より多くの情報を提供すると、より良い結果が得られます。以下の提案されたソリューションは、iptables
入出力トラフィックを許可するように設定されていると予想されます。それにもかかわらず、おそらく2つを見逃しているでしょう。
転送されたトラフィックを明示的に許可する必要があります。次の行を追加するには、/etc/sysctl.conf`を変更する必要があります。
net.ipv4.ip_forward=1
また、発信トラフィックを偽装する必要があります。マスカレーディングは、NAT接続ネットワークカードを持つホストにすべてのパケットの発信IPアドレスを書き換えます。以下のようにマスカレーディングを有効にできます。 NATインターフェイス名をメモしてください。
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
eth0
NATインターフェイスの名前に変更します。
トラブルシューティングのヒント
- クライアント上のLinuxサーバーのホストインターフェイスアドレスをpingします。成功すると、クライアントはデフォルトゲートウェイにアクセスできます。
- クライアント上のLinuxサーバーのnatインターフェースアドレスをpingします。成功すると、
iptables firewall
ICMP トラフィックが許可されます。そうでない場合は、iptables firewall
設定を確認する必要があります。 - 上記の手順を完了した後に残ったのは
outgoing rules
合計だけですpostrouting masquerade
。もう一度確認したい場合があります。
答え2
あなたは正しいです。次のように偽装して渡すPOSTROUTINGがありません。
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT