新しい iptables NAT は、他の HTTP 要求に対してエラー 400 誤った要求を生成します。

新しい iptables NAT は、他の HTTP 要求に対してエラー 400 誤った要求を生成します。

すべて:

最近、VPN(0x1000 / 0x1000)を介してポート443を介して特定の宛先(172.67.168.48)にトラフィックをルーティングするいくつかの新しいiptables(RE:下のコードスニペット)ルールが追加されました。新しいルールは、必要に応じてVPNを介してNATを実行しましたが、上記の目標とは関係のない他のHTTP要求が400誤った要求エラー応答を生成することに望ましくない影響を与えました。


# Create the RPDB rules
ip rule add from 0/0 fwmark "0x1000/0x1000" table ovpnc1 prio 9993        # VPN 1 fwmark

iptables -t mangle -A PREROUTING -i br0 -p tcp -d 172.67.168.48 --dport 443 -j MARK --set-mark 0x1000/0x1000
iptables -t nat -A PREROUTING -i br0 -p tcp -m mark --mark 0x1000/0x1000 -j DNAT --to-destination 172.67.168.48:443

宛先アドレスとポートが明示的に指定されている場合、他のHTTP要求が新しいNATルール(400不正な要求)の影響を受ける理由は何ですか?

お時間をいただきありがとうございます。

ありがとう、

ゲイリー

ベストアンサー1

VPNサーバー:仮説イーサネット0(IP 1.2.3.4)は、ターゲットWebサーバーのIPまたはネットワークに直接接続するか、少なくともこれへのパスを持つ物理インターフェイスです。 WebサーバーのIPに移動するすべてのトラフィックを監視し、172.67.168.48:443強制的にVPNトンネルを通過してNATに接続できます。 eth0のIPアドレス(1.2.3.4この場合)。この場合、br0インターフェイス(IP 10.10.10.1)は、VPNサーバーがトンネルトラフィックに使用する仮想インターフェイスです。 VPNが実行されているときにパケットを宛先IPにルーティングする方法を既に知っています。172.67.168.48

そうでない場合は、静的パスを追加する必要があります。

$ ip route show
172.67.168.48/32 via 10.10.10.1 dev br0 metric 101

ルーティングの説明が満たされると、IPへのトラフィックがトンネルを介してルーティングされ、反対172.67.168.48:443側に1.2.3.4出るように強制できます。172.67.168.48

$ sudo iptables -t nat -A POSTROUTING -o eth0 -p tcp -m tcp -d 172.67.168.48 --dport 443 -j SNAT --to-source 1.2.3.4
$ sudo iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

たとえば、クライアントがパケットを送信すると送信元172.67.168.48:80IPは変更されず、後続のチェーンで許可されていない場合はパケットが破棄される可能性があります。

おすすめ記事