質問: iptablesを使用して着信httpsをローカルipにリダイレクトします 1つのネットワークインターフェイス(eth0、パブリックip)とeth0:0のエイリアス、ローカルip192.168.1.1を備えたルーターがあります。すべての着信https(443)トラフィックを別のサーバーにリダイレクトしたいと思います。でやってみましたiptables -t nat -a prerouting -i eth0 -p tcp --dport 443 -m conntrack --ctstate new -j dnat --to-destination 192.168.1.2:443そしてそれは動作します。私のパブリックipのsslポートに来るすべてのトラフィックは192.168.1.2にリダイレクトされます。しかし、主な問題はこれです。これで、ローカルlanからインターネットへのすべてのhttpsトラフィックも、そのローカルipにリダイレクトされます。 https://facebook.com および192.168.1.2の回答。構成を機能させるには、どのように修正すればよいですか?
回答: 宛先アドレスに基づいてフィルタリングするだけです。iptables -t nat -a prerouting -i eth0 -p tcp --dport 443 -d $public_ip -m conntrack --ctstate new -j dnat --to-destination 192.168.1.2:443 パブリックipが動的である場合、ipアドレスが変更されたときにこのルールを更新するには、dhcpクライアントスクリプトにフックを追加する必要があります。また、ipセットを使用して、ルールを変更せずにチェックするipアドレスを変更することもできます。もう1つの不完全な解決策は、addrtypeモジュールを使用することです。このモジュールは、ルーティングテーブルをチェックして、アドレスに含まれるルーティングエントリのタイプを判別します。 localタイプを使用して、このipがホストのものであるかどうかを確認できます。iptables -t nat -a prerouting -i eth0 -p tcp --dport 443 -m addrtype --dst-type local -m conntrack --ctstate new -j dnat --to-destination 192.168.1.2:443 このソリューションは、接続を192.168.1.1と127.0.0.1、またはホストが持っている任意のipアドレスにもリダイレクトすることに注意してください。ルールに単純な! -d 192.168.1.1一致を追加することにより、宛先アドレスを除外できます。