我试图用防火墙规则取代现有的隧道:
firewall-cmd --zone=public --add-forward-port=port=9999:proto=tcp:toport=9999:toaddr=100.1.1.1这应该将所有传入的TCP连接转发到100.1.1.1
问题是它不工作(端口保持关闭)。我试图理解我做错了什么,我唯一能想到的就是目标IP地址位于不同的NIC上,是由Tailscale (类似于Wireguard )创建的,所以它是一种虚拟IP。
那么,你可以将IP转发到哪一个限制呢?有什么办法可以避开他们吗?
external (active)
target: default
icmp-block-inversion: no
interfaces: tailscale0
sources:
services: ssh
ports:
protocols:
forward: yes
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dhcpv6-client ssh
ports: 9999/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
port=9999:proto=tcp:toport=9999:toaddr=100.1.1.1
source-ports:
icmp-blocks:
rich rules发布于 2022-06-08 22:34:31
您可能需要在您的端口转发中添加伪装(将SNAT与DNAT端口转发一起应用,以便100.1.1.1知道如何通过您的firewalld主机进行响应)。
最简单的方法是将端口转发的输出接口(如尾比例尺接口,如tun0)添加到external区域:
firewall-cmd --zone=external --add-interface=tun0默认情况下,Firewalld的external区域带有伪装功能。如果在尾秤接口中使用自定义区域,则向其添加伪装:
firewall-cmd --zone=myzone --add-masquerade
firewall-cmd --zone=myzone --add-interface=tun0当然,确保您已经将端口转发的传入接口(可能是一些物理接口,例如eth0)添加到public区域(设置端口转发的同一区域):
firewall-cmd --zone=public --add-interface=eth0https://serverfault.com/questions/1102174
复制相似问题