iptablesに次のルールを追加しました。
-A PREROUTING -p tcp -m tcp --dport 3307 -j DNAT --to-destination 192.168.80.45:330
ポート3307にルールを追加する場合(たとえば、ポート3307の123.5.0.2 IPアドレスへのアクセスを拒否)、iptablesルールをどのように設定しますか?
ベストアンサー1
NATが発生しないように試みることができるので、最終的にパケットは転送されずにホストに残り、受信サービスがない場合は接続試行がリセットされます。これはファイアウォール部分間の役割の分離に違反します(フィルター表:デフォルト)とNATセクション(ナット部分)。
回避するには、フィルタルールを追加(またはすでに存在するルールセットに応じて挿入の代わりに-I
挿入)します。-A
渡された123.5.0.2から192.168.80.45:330までのトラフィック[sic]:
iptables -A FORWARD -s 123.5.0.2 -d 192.168.80.45 -p tcp --dport 330 -j DROP
DNATはルーティング前に発生するため、フィルタ/FORWARDチェーンが表示する部分はすでに3307ではなく、ターゲット192.168.80.45およびTCPポート330です。もちろん、ルールをより広くすることで、すべての宛先ポートプロトコルと宛先ポートまたはすべての宛先(宛先アドレスを指定せず)を指定しないことで拒否できます。
これを行う他の方法がたくさんあります。たとえば、フィルタルールで新しいターゲットポート330の代わりに元のポート3307を表示することが重要な場合(たとえば、NATルールを別々に再構築して両方の場所でターゲットを編集する必要がないため)、クエリを実行できます。つながるこのように:
iptables -A FORWARD -s 123.5.0.2 -m conntrack --ctproto tcp --ctorigdstport 3307 -j DROP
つまり、TCPプロトコルと元の宛先ポート(DNAT変換が可能になる前)3307を使用して、123.5.0.2で転送されたトラフィックを破棄します。