制作 CentOS 7.xa 端口转发 NAT 设备

制作 CentOS 7.xa 端口转发 NAT 设备

我想使用 iptables 将 CentOS 变成端口转发 NAT 机器。这是我第一次尝试,我想我可能需要一点帮助。

这是我想要实现的配置。我尝试通过端口 80 上的 CentOS 机器建立远程桌面连接,并让 CentOS 连接到端口 80 上的服务器。

192.168.0.120 是客户端,它应该通过连接到 192.168.0.100(CentOS)的端口 80 来连接到 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

我到目前为止尝试过的:

  1. 禁用 SELINUX
  2. 在 /etc/sysctl.conf 中启用 IPv4 转发

    /etc/sysctl.conf
    net.ipv4.ip_forward = 1
    
  3. /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 规则有什么问题吗?或者我可能遗漏了什么?

答案1

无论如何,你缺少了一条前向规则

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

答案2

在 RedHat Entrprise Linux 7.0(CentOS 7.0 的“上游”)中,预期的交互iptables是通过firewalld。手动修改iptables配置虽然可行,但并不是交互的预期方法。

如果您确实想iptables直接修改配置,您可能需要查看有关 的文档iptables。您走的路是对的,但例如,-i-o参数用于表示入口和出口接口(eth0等),而不是主机名。看来您只需要了解一些iptables工作原理的背景知识。

相关内容