
クライアント (Windows) からのすべてのポートを、ゲートウェイ (Linux) の背後にあるサーバー (Windows) に転送したいと思います。
私のネットワーク トポロジは次のようになります。
10.20.10.14 --> 10.20.10.4 --> 192.168.1.1 --> 192.168.1.4
client ppp0 eth0 server
|--------- Gateway -------|
ゲートウェイ デバイスには、ppp0 と eth0 という 2 つのネットワーク デバイスがあります。
クライアントと ppp0 間のネットワーク接続の場合、サーバー デバイスがクライアントから送信されたのと同じポート上のデータを確認できるようにしたいと思います。
言い換えれば、サーバーはクライアントと直接通信し、ゲートウェイはこの場合透過的であると考える必要があります。
さらに、このルールを削除する方法を知りたいです。
何か案は?
注: 私はすべてのデバイスの管理者です。
答え1
英語のルールを iptables ルールに翻訳するには、次のルールのみが必要です。
iptables -t nat -A PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4
宛先ポートは変更されません (クライアントが同時にサーバーに直接接続するまれな場合を除き、送信元ポートも変更されません)。
クライアントが手動でルートを追加して、サーバーに直接アクセスすることを妨げるものは何もありません192.168.1.4
。10.20.10.4
これを望まない場合、サーバーの IP を非表示にするには、次のルールを追加することもできます。
iptables -I FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
これにより、DNAT されなかったサーバーへの直接アクセスが削除されます。
これらのルールを削除するには、次のようにします-D
。
iptables -D FORWARD -s 10.20.10.14 -i ppp0 -d 192.168.1.4 -m conntrack ! --ctstate DNAT -j DROP
iptables -t nat -D PREROUTING -s 10.20.10.14 -i ppp0 -j DNAT --to-destination 192.168.1.4
ランダムコメント:
- DNAT 接続が転送されるため、ゲートウェイで IP 転送を有効にする必要があります。これを行う最も簡単な方法は、次のとおりです
echo 1 > /proc/sys/net/ipv4/ip_forward
。 - もちろん、サーバーは接続を受け入れるためにクライアントへのルートを必要とします。たとえば、ゲートウェイ (
192.168.1.1
) をデフォルト ゲートウェイとして持つなどです。 -i ppp0
はオプションであり、削除できます (または、-d 10.20.10.4
必要に応じて PREROUTING ルール内で に置き換えます)。 に置き換えない場合-i ppp+
(はワイルドカード)、問題が発生する可能性があります。急速なリンク障害/再接続が発生した場合、以前に切断されていなかった場合は+
新しい ppp インターフェイスが呼び出される可能性があります。iptables ルールは一致しなくなります。ppp1
ppp0
- DNAT ルールが削除されても、既に確立されているフローは影響を受けませんが、新しいフローは影響を受けます (つまり、サーバーに到達しません)。