具有多个IP的接口的firewall-cmd转发规则?

具有多个IP的接口的firewall-cmd转发规则?

我正在寻找一种使用firewall-cmd或其他命令来执行以下操作的方法。

传入公共接口有多个与其绑定的 IP 地址。如何仅转发其中一个 IP 地址的端口?

bond0 - public:
 192.168.1.100 local machine SSHD bound here.
 192.168.1.200  --->  forward  SSH, HTTPS  to  192.168.1.53 vm bridge on machine 

当我转发给定端口上的所有传入流量时,我可以使用--forward-port,但是我只想对发往一个目标 IP 的流量执行此操作。

另一种选择是将所有发往 0.200 的流量路由到 0.53 虚拟机,但也不知道如何实现这一点。

答案1

$ firewall-cmd --zone=external \
    --add-forward-port=port=80:addr=172.16.1.1:proto=tcp:toport=80:toaddr=192.168.0.2

参考

使用“丰富语言”规则

将使用 TCP 协议从端口 4011 上的 1:2:3:4:6:: 收到的 IPv6 数据包转发到端口 4012 上的 1::2:3:4:7:

rule family="ipv6" source address="1:2:3:4:6::" forward-port to-addr="1::2:3:4:7" to-port="4012" protocol="tcp" port="4011"

  

4.5.3.7.4.5。使用丰富规则日志命令示例 5

答案2

我通过搜索相同的东西偶然发现了这一点,并最终自己找出了解决方案:这根本不可能--forward-port,你需要一个丰富的规则。虽然原始海报早已不复存在,但希望这对像我这样的进一步搜索者有所帮助:

sudo firewall-cmd --add-rich-rule='rule family=ipv4 destination address="192.168.1.200" forward-port port="1-65535" protocol="tcp" to-addr="192.168.1.53"'
sudo firewall-cmd --add-rich-rule='rule family=ipv4 destination address="192.168.1.200" forward-port port="1-65535" protocol="udp" to-addr="192.168.1.53"'

我从来没有理由转发一系列端口,也没有转发到不同的IP,所以后一部分可能不完全正确,但相关部分(对于最初的问题)是destination address丰富规则的一部分,会将其限制为对该 IP 的连接尝试。

相关内容