麒麟系统端口转发需先启用ipv4转发(sysctl -w net.ipv4.ip_forward=1并写入/etc/sysctl.conf),再通过firewalld(推荐)或iptables配置规则,否则所有转发均无效。

要在麒麟操作系统中让本机接收的网络流量能被转发出到其他端口或地址,必须开启系统的网络端口转发功能,否则所有防火墙端口转发规则都将无法生效。
启用IPv4内核转发
这一步是端口转发的底层前提,不执行则后续所有规则均无效。直接写入临时生效值:
sudo sysctl -w net.ipv4.ip_forward=1
若需重启后仍保持开启,必须修改配置文件:
sudo sed -i 's/#net.ipv4.ip_forward=1/net.ipv4.ip_forward=1/' /etc/sysctl.conf
执行 【sudo sysctl -p】 使配置立即从文件加载并生效,跳过这步会导致下次重启后转发自动关闭。
配置firewalld端口转发(推荐)
适用于已安装并启用 firewalld 的麒麟V10服务器版或桌面版。该方式语义清晰、支持区域策略、可审计。
方法一:基础端口映射(无源限制)
1、为 public 区域启用伪装:
sudo firewall-cmd --zone=public --add-masquerade --permanent
2、添加转发规则(例如将进来的TCP 80转到本地8080):
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
3、重载配置:
sudo firewall-cmd --reload
方法二:带目标地址的转发(跨主机)
若需将流量转发至另一台局域网机器(如192.168.10.5),使用 toaddr 参数:
sudo firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toport=80:toaddr=192.168.10.5
注意:此场景下必须确保目标主机已开放对应端口,且中间路由可达。
使用iptables直接配置DNAT(兼容旧环境)
适用于未启用 firewalld 或需精细控制链顺序的场景,命令级操作更底层,但易出错。
第一步:确认IP转发已开启(见第一部分),否则此步无效。
第二步:添加PREROUTING规则实现入向地址转换:
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8080
第三步:允许转发后的连接通过filter表(关键!缺此规则会导致连接被DROP):
sudo iptables -A FORWARD -p tcp -d 127.0.0.1 --dport 8080 -m state --state NEW -j ACCEPT
第四步:保存规则到持久化文件(不同版本路径略有差异,优先用此通用方式):
sudo sh -c "iptables-save > /etc/iptables/rules.v4"











