ゲートウェイ サーバーとして CentOS 7 を使用しています。このサーバーには、ens28 と ens29 という 2 つのネットワーク インターフェイスがあります。
ens28 はプライベート 192.168.xx ネットワークを使用し、WAN としてみなされます。Ens29 は 172.16.0.0 サブネットを持つ LAN 領域です。
iptables 経由で NAT 構成を設定したので、172... サブネット上のホストがインターネットにアクセスできるようになります。
ここで、サブネット 172 上のホストがポート 443 で Web サーバーをブロードキャストするようにします。
ポート転送前の基本的な設定:
# Generated by iptables-save v1.4.21 on Mon Nov 30 21:45:11 2020
*nat
:PREROUTING ACCEPT [65:4705]
:INPUT ACCEPT [1:60]
:OUTPUT ACCEPT [1:72]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o ens28 -j MASQUERADE
COMMIT
# Completed on Mon Nov 30 21:45:11 2020
# Generated by iptables-save v1.4.21 on Mon Nov 30 21:45:11 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [24:4585]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i ens28 -o ens29 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens29 -o ens28 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
転送に関しては、次のルールを試しました:
iptables -A PREROUTING -t nat -i ens28 -p tcp --dport 443 -j DNAT --to 172.16.0.202:443
iptables -A FORWARD -p tcp -d 172.16.0.202 --dport 443 -j ACCEPT
新しいルールを追加した後の iptables 構成:
# Generated by iptables-save v1.4.21 on Tue Dec 1 15:39:36 2020
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [434:52068]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i ens28 -o ens29 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens29 -o ens28 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -d 172.16.0.202/32 -p tcp -m tcp --dport 443 -j ACCEPT
COMMIT
# Completed on Tue Dec 1 15:39:36 2020
# Generated by iptables-save v1.4.21 on Tue Dec 1 15:39:36 2020
*nat
:PREROUTING ACCEPT [297:55943]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [7:532]
:POSTROUTING ACCEPT [7:532]
-A PREROUTING -i ens28 -p tcp -m tcp --dport 443 -j DNAT --to-destination 172.16.0.202:443
-A POSTROUTING -o ens28 -j MASQUERADE
COMMIT
# Completed on Tue Dec 1 15:39:36 2020
- ウェブサーバーホストのIPアドレスは172.16.0.202です
- ens28カードのアドレスは192.168.1.254です
- ens29カードのアドレスは172.16.0.253です
ポート 443 は外部ルーター (192.168.1.0 > パブリック IP) に転送され、インターネットから表示されます。
転送は sysctl で有効になっています:
net.ipv4.ip_forward = 1
それで、何が足りないのでしょうか? 172 からの転送が機能しないのはなぜですか?
前もって感謝します。
答え1
ルールは 1 つずつチェックされます。
拒否された後の各ルールは無視されます。
反転させる必要があります
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -d 172.16.0.202/32 -p tcp -m tcp --dport 443 -j ACCEPT
に
-A FORWARD -d 172.16.0.202/32 -p tcp -m tcp --dport 443 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited