Linux
製作 CentOS 7.xa 埠轉發 NAT 設備
我想讓 CentOS 成為使用 iptables 的埠轉發 NAT 機器。這是我第一次嘗試這個,我想我可能需要一點幫助。
這是我想要實現的配置。我正在嘗試通過埠 80 上的 CentOS 機器建立遠端桌面連接,並讓 CentOS 連接到埠 80 上的伺服器。
192.168.0.120 是應該通過連接到埠 80 上的 192.168.0.100 (CentOS) 來連接到 192.168.30.37 上的埠 80 的客戶端。
- CentOS ens160 為 192.168.0.100/24
- CentOS ens192 為 192.168.30.254/24
- CentOS ens224 為 192.168.40.254/24
到目前為止我嘗試了什麼:
- 禁用 SELINUX
- 在 /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 規則有什麼問題嗎?或者有什麼我可能會錯過的嗎?
無論如何,你錯過了一個 FORWARD RULE
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
and-o
參數旨在表示入口和出口介面(eth0
等),而不是主機名。看起來你只需要一些關於如何iptables
工作的背景知識。