Linuxサーバーに2つのIPアドレスがある場合にポートをリダイレクトするようにipableを設定する方法[閉じる]

Linuxサーバーに2つのIPアドレスがある場合にポートをリダイレクトするようにipableを設定する方法[閉じる]

私のGlassfish Webサーバーが2つの異なるIPアドレスにWebページを提供したいと思います。私が望むのは、ポートを変換するためのiptableルールを設定することです。

IP#1の場合

198.xxx.xxx.14:80   <-- redirected to --> port 8080
198.xxx.xxx.14:443  <-- redirected to --> port 8181

IP#2の場合

199.xxx.xxx.185:80  <-- redirected to --> port 9090
199.xxx.xxx.185:443 <-- redirected to --> port 9191

その後、Glassfish サーバーには 2 つの仮想サーバーがあります。

  • 1 つは、すべてのホストのポート 8080 および 8181 でリッスンします。
  • もう一方は、すべてのホストのポート9090と9191をリッスンします。

IPアドレスが1つしかないDebianサーバーで動作するiptablesルールは次のとおりです。

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -o lo -p tcp --dport 443 -j REDIRECT --to-port 8181
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8181

私の/etc/hostsファイルには2つのIPアドレスが含まれています。

...
198.xxx.xxx.14 subdomain.mydomain1.com myservername1
127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
199.xxx.xxx.185 mydomain2.org  myservername2

そして、/etc/network/interfaces以下のようにネットワークアダプタバインディングがすでに含まれています。

...
auto venet0:0
iface venet0:0 inet static
    address 199.xxx.xxx.185
    netmask 255.255.255.255

auto venet0:6
iface venet0:6 inet static
    address 198.xxx.xxx.14
    netmask 255.255.255.255
...

答え1

iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.14 --dport 443 -j REDIRECT --to-ports 8181
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 80 -j REDIRECT --to-ports 9090
iptables -t nat -A PREROUTING -p tcp -m tcp -d 198.xxx.xxx.185 --dport 443 -j REDIRECT --to-ports 9191

これは他のホストからの着信トラフィックを処理します。ローカルアクセスの場合は、あいまいさを避けるためにOUTPUTルールを完全に削除し、実際のポート番号を使用することをお勧めします。または、127.0.0.1:80または127.0.0.1:443に接続するときにアクセスする2つのポートを選択し、そのポートに2つの出力ルールを設定します。

関連情報