Iptablesを使用して、wifiルーター上のすべてのトラフィックをローカルウェブサーバーにリダイレクトしようとしています。コマンドが正しいかどうかはわかりませんが、ルーターのIP(172.16.0.1)をルールから除外して、自分がルーターにアクセスできないようにロックアウトしたくないのです。
これまでに思いついたこと:
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j DNAT --to 172.16.0.2:80
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 443 -j DNAT --to 172.16.0.2:80
上記でテストしたところ、ルーターに再度アクセスできなくなり、リダイレクトが機能しなくなりました。何が問題ですか、172.16.0.1を172.16.0.2へのリダイレクトから除外するにはどうすればよいですか?
セットアップ:172.16.0.2はWebサーバーのIPです。172.16.0.1はルーター(dd-wrt)で、インターネット接続はありません。
私が達成しようとしていることの例:
必要なのは次の1つのルールだけです。
iptables -t nat -I PREROUTING --src 0/0 --dst 172.16.0.2
これは、natテーブル(-t nat)のPREROUTINGチェーン(?=-I)にルールを挿入します。
宛先アドレスが172.16.0.2(--dst 172.16.0.2)の着信(-src 0/0)パケット。
覚えておくべきことは、着信トラフィックをリダイレクトすることは、natテーブルのPREROUTINGチェーンにルールを挿入することを意味します。リダイレクトは、指定されたインターフェイスに対してのみ行われます。 man iptablesの詳細については、REDIRECTキーワードを検索してください。
--append PREROUTING --source 172.16.0.1 --jump RETURN
RETURNは、このチェーンのトラバースを停止し、前の(呼び出し)チェーンの次のルールから再開することを意味します。組み込みチェーンの終わりに到達した場合、またはターゲットRETURNを持つ組み込みチェーン内のルールが一致した場合、チェーンポリシーで指定されたターゲットがパケットの運命を決定します。