firewall-cmd centos 端口转发似乎不起作用?
Posted
技术标签:
【中文标题】firewall-cmd centos 端口转发似乎不起作用?【英文标题】:firewall-cmd centos port forwarding seems not to work? 【发布时间】:2017-11-24 01:15:36 【问题描述】:目前我尝试使用 firewall-cmd 为 CentOS 设置端口转发。
目前我的盒子有两个接口:eth0,eth1。
eth0代表内部网络,在zone=public(默认),
eth1代表外网,在zone=external
当前 eth1 连接到另一个网络,该网络包含一个通往互联网的路由器。
我的外部防火墙如下所示:
external (active)
target: default
icmp-block-inversion: no
interfaces: eth1
sources: 192.168.178.0/24
services: dhcpv6-client http https ssh
ports: 1194/udp
protocols:
masquerade: yes
forward-ports: port=1194:proto=udp:toport=:toaddr=192.168.179.4
sourceports:
icmp-blocks:
rich rules:
我也有 22 端口的规则:
firewall-cmd --zone=external --add-forward-port=port=22:proto=tcp:toport=22:toaddr=192.168.179.8
但是这两个规则都不起作用,1194 和端口 22 的规则都不起作用。 实际上我测试了我们路由器的端口转发是否适用于机器,事实上它确实如此,因为如果我将 HAPROXY 设置为指向另一台 SSH 机器:
frontend sshd
bind 192.168.178.254:22
mode tcp
default_backend ssh
timeout client 1h
backend ssh
mode tcp
server static 192.168.179.8:22 check
并删除port=22
规则,我可以连接到它。
我实际上是按照宽松的 selinux 规则运行的。
公共区域是这样的:
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources: 192.168.179.0/24
services: dhcpv6-client http https ssh
ports: 7583/tcp
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
我有什么遗漏吗? 我的意思是我也试图让它与 iptables 一起工作,但它根本没有用。
sysctl net.ipv4.ip_forward
返回net.ipv4.ip_forward = 1
Linux Box 不是这两个网络的默认路由器。两者都有其他路由器。
【问题讨论】:
我在内部(您的公众)上伪装的问题是它破坏了路由到服务器的传入外部流量的源 IP。这将我的 SMTP 服务器变成了一个开放的中继,因为它信任所有传入的流量,认为源是路由器本身,它是内部的。然而,如果没有伪装,我无法找到一种方法让内部计算机访问具有转发端口的外部区域中的公共静态 IP,尽管它可以毫无问题地访问互联网本身,并且传入的外部流量可以到达服务器。如果您将传入的 Internet 流量转发到一个 inte 【参考方案1】:区域目标可以设置为拒绝,这将阻止除区域配置中明确定义的服务和端口之外的所有传入流量
【讨论】:
【参考方案2】:看起来两个网络都需要开启伪装:
firewall-cmd --zone=external --permanent --add-masquerade
firewall-cmd --zone=public --permanent --add-masquerade
firewall-cmd --reload
【讨论】:
以上是关于firewall-cmd centos 端口转发似乎不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
CentOS7 中使用 firewall-cmd端口转发以及常用命令
firewall-cmd centos 端口转发似乎不起作用?
CentOS7 下使用 Firewall防火墙系统封禁允许IP和端口的访问 端口转发 IP转发方法