Linux下实现Firewalld Net 外网端口转发至内网


前提条件:

  1. 公网服务器至少需要2个网卡,一个配公网一个配内网。
  2. 内网服务器网卡配置同公网服务器相同内网段内网地址

如果安装过iptables的机器,需要先停止,然后设置开机禁用:

servcie iptables stop                     --临时关闭防火墙
chkconfig iptables off                    --永久关闭防火墙

特别注意:请勿使用yum remove iptables来卸载防火墙,因为iptables附带了很多依赖文件,这样卸载会导致机器SSH丢失。

安装firewall防火墙

yum install firewalld -y

设置开机自启

systemctl enable --now firewalld

开启路由转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

检查NAT转发是否开启

firewall-cmd --query-masquerade

如图:

开启NAT转发

firewall-cmd --zone=public --permanent --add-masquerade

开启TCP流量转发

firewall-cmd --permanent --zone=public --add-forward-port=port=9810:proto=tcp:toport=22:toaddr=10.10.10.3

将本地9810端口,转发到10.10.10.3内网主机的TCP 22 端口。

重新载入Firewalld

firewall-cmd --reload

开启UDP流量转发(可选)

firewall-cmd --permanent --zone=public --add-forward-port=port=9810:proto=udp:toport=22:toaddr=10.10.10.3

本机Firewalld 放行9810端口

firewall-cmd --add-port=8080/tcp --permanent

内网放行22端口

firewall-cmd --add-port=22/tcp --permanent