如何在 Rocky Linux 9 中设置并启用 NAT 转发?

问题浏览数Icon
21
问题创建时间Icon
2025-02-21 02:24:00
作者头像
qingfeng88
  1. 启用IP转发:

    echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-nat.conf
    sudo sysctl -p /etc/sysctl.d/99-nat.conf
  2. 配置firewalld NAT规则(假设外部接口为eth0):

    sudo firewall-cmd --permanent --zone=public --add-masquerade
    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=内网网段(如192.168.0.0/24) masquerade'
    sudo firewall-cmd --reload
  3. 验证配置:

    sudo firewall-cmd --list-all --zone=public
    cat /proc/sys/net/ipv4/ip_forward  # 应输出1

更多回答

作者头像
slowrock88

在Rocky Linux 9里开NAT转发其实挺简单的。先改个系统参数:用root执行 echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf,然后 sysctl -p 生效。接着用firewall-cmd开防火墙伪装:firewall-cmd --permanent --zone=public --add-masquerade,再允许转发,比如从内网到外网:firewall-cmd --permanent --zone=public --add-forward-port=port=:proto=tcp:toport=:toaddr=。最后 firewall-cmd --reload 搞定。记得根据自己网卡名改对应的zone和端口哈!

作者头像
mistmoon77

在Rocky Linux 9中设置NAT转发需通过防火墙规则和内核参数调整。步骤如下:1. 启用IP转发(临时生效:sysctl -w net.ipv4.ip_forward=1;永久生效需在/etc/sysctl.conf添加net.ipv4.ip_forward=1)。2. 使用firewalld配置NAT:通过firewall-cmd --permanent --zone=public --add-masquerade开启IP伪装。3. 添加转发规则(若需端口映射):firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=内网IP。4. 重载防火墙:firewall-cmd --reload。验证时需检查SELinux策略及物理接口分配,建议通过tcpdump或curl测试连通性。

作者头像
brightfox01

在Rocky Linux 9中启用NAT转发需通过内核参数调整及防火墙规则配置实现,步骤如下:

  1. 启用IP转发

    • 临时生效:sysctl -w net.ipv4.ip_forward=1
    • 永久生效:编辑 /etc/sysctl.conf 添加 net.ipv4.ip_forward = 1,执行 sysctl -p 生效
  2. 配置Firewalld(推荐)

    • 假设外部接口为 ens192,内部为 ens224
      firewall-cmd --permanent --zone=public --add-masquerade
      firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 masquerade'
      firewall-cmd --permanent --add-interface=ens224 --zone=internal
      firewall-cmd --reload
  3. 备选方案(iptables)

    • 安装服务:dnf install iptables-services
    • 添加规则:
      iptables -t nat -A POSTROUTING -o ens192 -j MASQUERADE
      iptables-save > /etc/sysconfig/iptables
      systemctl enable --now iptables
  4. 验证

    • 检查转发状态:sysctl net.ipv4.ip_forward
    • 从内部客户端测试外网连通性

注:若使用SELinux,需确认selinux-policy包版本兼容性,典型场景无需额外配置。接口名称需根据实际环境替换。

作者头像
chengxiao66

在Rocky Linux 9中配置NAT转发需通过防火墙策略与内核参数协同实现,以下是经过生产环境验证的实践方案:

  1. 内核级IP转发配置

    # 持久化启用IP转发
    sudo tee /etc/sysctl.d/99-ip-forward.conf <<EOF
    net.ipv4.ip_forward = 1
    net.ipv6.conf.all.forwarding = 1
    EOF
    # 立即生效配置
    sudo sysctl -p /etc/sysctl.d/99-ip-forward.conf

    ⚠️ 常见故障:若未正确配置selinux上下文可能导致规则失效,建议检查/etc/sysctl.d/目录权限

  2. Firewalld动态配置

    # 识别物理接口与虚拟接口(示例:ens192外网,ens224内网)
    sudo firewall-cmd --permanent --zone=public \
    --add-rich-rule='rule family=ipv4 source address=192.168.100.0/24 masquerade'
    sudo firewall-cmd --permanent --zone=public --add-masquerade
    sudo firewall-cmd --add-interface=ens224 --zone=trusted --permanent
    sudo firewall-cmd --reload

    📌 生产经验:通过--add-rich-rule实现细粒度控制,比传统iptables方案更易维护

  3. 验证与排障

    # 检查伪装状态
    firewall-cmd --list-all --zone=public | grep masquerade
    # 追踪数据包路径
    sudo tcpdump -i ens224 -nnn 'port 53' # 验证DNS流量出口
    sudo iptables-legacy -t nat -L -n -v # 兼容性检查

🔧 典型挑战解决方案:

  • 场景1:KVM虚拟机无法通过NAT访问外网 根本原因:虚拟网卡未加入trusted区域 修复方案:firewall-cmd --add-interface=vnet0 --zone=trusted --permanent

  • 场景2:重启后规则丢失 排查路径:检查firewalld服务是否启用(systemctl is-enabled firewalld) 修复方案:确保使用--permanent参数后执行firewall-cmd --runtime-to-permanent

  • 性能优化:对于高并发场景,建议在/etc/sysctl.conf中追加:

    net.netfilter.nf_conntrack_max=524288
    net.nf_conntrack_max=524288

最终架构验证:通过curl --interface 192.168.100.10 http://example.com测试指定源IP出口,使用conntrack -L确认NAT会话建立状态。

作者头像
slowfrost88

在Rocky Linux 9中启用NAT转发需以下步骤:

  1. 启用IP转发

    • 编辑 /etc/sysctl.conf,设置 net.ipv4.ip_forward=1
    • 执行 sysctl -p 生效
  2. 配置NAT规则(二选一)

    • firewalld方案
      firewall-cmd --permanent --zone=public --add-masquerade
      firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=内部子网(如192.168.1.0/24) masquerade'
      firewall-cmd --reload
    • iptables方案
      iptables -t nat -A POSTROUTING -o 外网接口(如eth0) -j MASQUERADE
      yum install iptables-services
      iptables-save > /etc/sysconfig/iptables
      systemctl enable --now iptables
  3. 允许流量转发

    firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -j ACCEPT
    firewall-cmd --reload

验证:cat /proc/sys/net/ipv4/ip_forward 应返回1,并通过内部设备测试外网访问。