记录Linux服务器中的iptables端口转发设置

Linux iptables 是一个强大的防火墙工具,支持网络地址转换(NAT)和数据包转发功能。通过配置 iptables 的 nat 表(如 PREROUTING 和 POSTROUTING 链),可以实现端口转发、IP 伪装(MASQUERADE)等转发规则。例如,使用 -j DNAT 修改目标地址和端口,或 -j SNAT/MASQUERADE 修改源地址以实现内网访问外网。转发功能需确保系统内核开启 net.ipv4.ip_forward=1,并配合 filter 表的 FORWARD 链控制流量放行。iptables 转发广泛应用于路由器、网关及容器网络等场景,但较复杂的配置可改用 nftables 或 firewalld 管理。

1、Centos7系统关闭并禁用系统默认的 Firewalld 防火墙,Debian系统默认自带iptables系统,直接跳到第三步清空默认规则即可;

    systemctl stop firewalld.service
    systemctl disable firewalld.service

2、Centos7系统安装并启用 Iptables;

    yum install iptables iptables-services -y
    systemctl start iptables.service
    systemctl enable iptables.service

3、清空 Iptables 默认规则并保存;

    iptables -F
    iptables -X
    iptables -Z
    service iptables save    #centos7系统保存
    iptables-save > /etc/iptables    #debian系统保存

4、开启系统内核转发;

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

5、设置单端口转发规则,请修改相应内容并去除括号;

    iptables -t nat -A PREROUTING -p tcp --dport [本机端口号] -j DNAT --to-destination [目标IP:端口]
    iptables -t nat -A PREROUTING -p udp --dport [本机端口号] -j DNAT --to-destination [目标IP:端口]
    iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [目标端口号] -j SNAT --to-source [本机主网卡IP]
    iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [目标端口号] -j SNAT --to-source [本机主网卡IP]

6、设置端口段转发规则,请修改相应内容并去除括号;

    iptables -t nat -A PREROUTING -p tcp -m tcp --dport [本机端口段开始:本机端口段结束] -j DNAT --to-destination [目标IP]
    iptables -t nat -A PREROUTING -p udp -m udp --dport [本机端口段开始:本机端口段结束] -j DNAT --to-destination [目标IP]
    iptables -t nat -A POSTROUTING -d [目标IP] -p tcp -m tcp --dport [目标端口段开始:目标端口段结束] -j SNAT --to-source [本机主网卡IP]
    iptables -t nat -A POSTROUTING -d [目标IP] -p udp -m udp --dport [目标端口段开始:目标端口段结束] -j SNAT --to-source [本机主网卡IP]

7、保存并重启 Iptables;

    ##centos7系统
    service iptables save
    service iptables restart
     
    ##debian系统
    iptables-save > /etc/iptables
    iptables-restore < /etc/iptables

Debian系统重启后规则会丢失,需设置开机后自启规则,配置如下:

    touch /etc/network/if-pre-up.d/iptables
     
    chmod +x /etc/network/if-pre-up.d/iptables

然后编辑这个文件:nano /etc/network/if-pre-up.d/iptables ,输入以下内容:

    #!/bin/sh 
    /sbin/iptables-restore < /etc/iptables

8、查看目前 Iptables 规则和NAT(转发)规则;

    iptables -nL --line-number     #查看Iptables 规则
    iptables -t nat -vnL     #查看NAT(转发)规则

9、删除单条或全部NAT转发规则;

    iptables -t nat -D POSTROUTING [规则列号]     #删除单条,初始号为1
    iptables -t nat -F        #删除全部

 

投上你的一票

本文出处:老蒋部落 » 记录Linux服务器中的iptables端口转发设置 | 欢迎分享( 公众号:老蒋朋友圈 )

公众号 「老蒋朋友圈」获取站长新知 / 加QQ群 【1012423279】获取商家优惠推送