CentOS7通过SNAT上网

本文介绍了如何在CentOS7系统中通过SNAT让无法联网的192.168.0.34机器通过192.168.0.24主机上网。首先在24机器上设置对34的SNAT白名单并开启SNAT,然后在34机器上更改默认网关,以此实现网络共享。

问题由来

局域网里面有两台机器:

  • 192.168.0.24
  • 192.168.0.34

其中24机器是单网卡,可以联网。34机器不能联网。现在需要让34机器通过24机器联网。

这就需要借助SNAT,NAT即“网络地址转换协议”,细分为DNAT(目标地址转换)和SNAT(源地址转换),SNAT主要用于共享上网,今次需要用到的就是SNAT。

在24机器上开启SNAT

  • step1 开启对34的白名单
$ sudo firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.34" accept"
$ sudo firewall-cmd --reload
  • step2 开启SNAT
$ sudo iptables  -F #清空iptables的nat
$ cat /etc/sysctl.conf
$ sudo vim /etc/sysctl.conf
#### add net.ipv4.ip_forward=1
$ sudo sysctl -p /etc/sysctl.conf #打开内核转发
$ sudo iptables -t nat -A POSTROUTING  -s 192.168.0.0/24 -j SNAT --to-source 192.168.0.24

在34机器上修改GW

$ ip route show
$ sudo route delete default gw 192.168.0.1
$ sudo route add default gw 192.168.0.24
$ ip route show
$ ping www.baidu.com

搞定!

### 配置概述 为了使 CentOS 7 成功作为软件路由器运行,需完成几个关键配置步骤。这包括开启 IP 转发功能、安装并配置防火墙工具(如 `iptables`),以及设置 NAT 规则以便内部网络能够访问外部互联网。 ### 启用 IP 转发 启用内核中的 IP 转发是第一步也是至关重要的一步。此操作允许操作系统转发来自一个接口的数据包至另一个接口。编辑 `/etc/sysctl.conf` 文件,在其中加入如下行: ```bash echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf ``` 随后执行命令让更改即时生效[^1]: ```bash sysctl -p ``` ### 安装与启动 iptables 考虑到默认的防火墙管理器可能不适合某些高级路由场景,建议停用 `firewalld` 并转而使用更灵活的传统 `iptables` 工具。停止 `firewalld` 的指令为: ```bash systemctl stop firewalld ``` 接着安装 `iptables-services` 包以获得持久化的规则支持: ```bash yum -y install iptables-services ``` ### 设置 NAT 和端口映射 为了让连接到该路由器的设备能上网,需要创建源地址转换 (SNAT) 或者伪装 (MASQUERADE) 规则。对于静态公网 IP 地址推荐采用 SNAT 方式;而对于动态获取的 WAN 接口,则应选择 MASQUERADE 方法。下面展示了一个典型的 SNAT 应用实例: ```bash iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j SNAT --to-source 10.1.0.220 ``` 如果希望更加通用化处理 DHCP 分配的出口 IP,则可替换上述命令为: ```bash iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ``` 这里假设 `eth0` 是面向 Internet 的网卡名称[^4]。 最后不要忘记保存这些修改过的规则集以免重启后丢失: ```bash service iptables save ``` 并且确保服务会在每次开机时自动加载: ```bash systemctl enable iptables systemctl start iptables ``` 通过以上步骤,已经完成了基本的软路由配置过程。当然实际部署过程中还需要根据具体的硬件环境调整参数设定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值