CentOSをポートフォワーディングNAT iptablesを使用するマシンにしたい。これを試したのはこれが初めてで、少し助けが必要かもしれないと思う。
これは私が達成しようとしている構成です。ポート80でCentOSマシンを介してリモートデスクトップ接続を確立し、CentOSをポート80でサーバーに接続しようとしています。
192.168.0.120は、ポート80の192.168.0.100(CentOS)に接続することにより、192.168.30.37のポート80に接続する必要があるクライアントです。
私がこれまでに試したこと:
/etc/sysctl.confでIPv4転送を有効にしました
/etc/sysctl.conf
net.ipv4.ip_forward = 1
/ etc/systemconfig/iptablesは
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [12:944]
-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 ens160 -o ens192 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens192 -o ens160 -j ACCEPT
-A FORWARD -i ens160 -o ens224 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i ens224 -o ens160 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT [4:272]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i ens160 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.30.37:80
-A POSTROUTING -o ens160 -j MASQUERADE
-A POSTROUTING -d 192.168.0.100/32 -j MASQUERADE
COMMIT
それで、私のiptablesルールに何か問題がありますか?それとも私が見逃している可能性があるものはありますか?
とにかく、あなたはフォワードルールを逃しています
iptables -A FORWARD -i ens160 -o ens192 -p tcp -m tcp -d 192.168.30.37 -m state --state NEW -j ACCEPT
この前に、上記のルールを挿入する必要があります。
-A FORWARD -j REJECT --reject-with icmp-Host-prohibited
RedHat Entrprise Linux 7.0(CentOS 7.0の「上流」)では、iptables
とのやり取りは firewalld
を介して行われます。 iptables
構成を手動で変更することは可能ですが、相互作用の場合は意図した方法ではありません。
iptables
構成を直接変更したい場合は、iptables
に関するドキュメントを参照してください。あなたは正しい道を進んでいますが、例えば、-i
および-o
引数は、入力インターフェースと出力インターフェース(eth0
など)、ホスト名ではありません。 iptables
がどのように機能するかについて、いくつかの背景が必要なようです。