私の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つの出力ルールを設定します。