IP転送、マスカレーディング、NAT

IP転送、マスカレーディング、NAT

Linuxを実行しているターゲットには物理インターフェイスがありますeth0。このインターフェイスのIPアドレスは172.16.81です。X(パブリックIP)。

eth0:1IPアドレスが173.1.1の仮想インターフェイスを作成する必要があります。X。 IPアドレス173.1.1を使用してカスタムポート49155でソケットサーバーを実行します。X

他のPC/ターゲットでは173.1.1にpingを送信できません。X。しかし、ソケットクライアントプログラムを別のPCで実行する予定です。クライアントは172.16.81のポート49155に接続できる必要があります。XパブリックIP。

NAT、ブリッジを試しましたが、成功しませんでした。

サーバー<-->クライアント通信は、次のiptableルールを使用して設定できます。

echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -i ens33 -o 173.1.1.6 -p tcp --syn --dport 49155 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -i ens33 -o 173.1.1.6 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i ens33 -o 173.1.1.6 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -A PREROUTING -i ens33 -p tcp --dport 49155 -j DNAT --to-destination 173.1.1.6
sudo iptables -t nat -A POSTROUTING -o ens33 -p tcp --dport 49155 -d 173.1.1.6 -j SNAT --to-source 192.168.233.251
sudo iptables -A INPUT -m tcp -p tcp -s 192.168.233.251 --dport 49155 -j ACCEPT

この時点でも、外部PCから173.1.1.6にpingを送信できます。

しかし、次の規則を追加したので、173.1.1.6を外部の世界に見えないようにする必要がありました。

sudo iptables -A INPUT -d 173.1.1.6 -j DROP
sudo iptables -A OUTPUT -s 173.1.1.6 -j DROP
sudo iptables -A FORWARD -s 173.1.1.6 -j DROP

このpingがブロックされた後。サーバー <--> クライアント通信も発生しません。

答え1

実際に構築しようとしているものと、最終的に達成しようとしているものはわかりませんが、次の点を考慮してください。

  1. 同じネットワークインターフェイスに設定されているかどうかにかかわらず、同じホストに2つのIPアドレスを設定します。

  2. これらのアドレスのいずれかにバインドされたサーバープログラムがあります。

  3. 他のホストが上記のプログラムによってバインドされたアドレスを介してこのホストにアクセスしたくありません。

  4. 他のホストがバインドされていない別のアドレスを使用して上記のプログラムに接続できるようにしたいです。

上記がどのような場合に適しているかにかかわらず、次のiptablesルールを使用してこれを実行できます。

(IPアドレスがあり、サーバープログラムがそれにバインドされていると仮定すると、192.168.1.2他の192.168.2.2ホスト192.168.2.2:80がそれに接続できるようにしたい192.168.1.2:8080

iptables -t raw -I PREROUTING -d 192.168.2.2 -j DROP
iptables -t nat -I PREROUTING -d 192.168.1.2 -p tcp --dport 8080 -j DNAT --to-destination 192.168.2.2:80

(注:このルールはゲートウェイなどではなくホスト自体に適用されます。理解FORWARDできないルールが含まれているため、何をしているのか、どこで行うのかわかりません)

ここで重要なのは、後続の一致と同様に、不要なトラフィックを破棄するraw (PREROUTING)代わりに使用することです。filter (INPUT)filter (INPUT)nat (PREROUTING)

-i明らかに、そのアドレスが完全に「見えなくなる」ことを望むので、最初のルールにインバウンドインターフェイスマッチング()を追加したくないでしょう。 (わかりました、おそらくあなたは次のよう! -iなものが欲しいでしょう。もう一度言っても、本当に何をしたいのかわかりません。)2番目に、DNATが発生したい状況によって異なります。

ちなみに、この目的であえて認定IPを使う理由はないと思います。このホストが移動する必要があるプライベートサブネット)。

PS 私が知っている限り、あなたが「仮想インターフェイス」と呼ぶのは、単一のネットワークインターフェイスで複数のIPアドレスを構成する古代の方法に過ぎません。

関連情報