Linux 搭建网关服务器,使内网服务器访问公网 作者: Chuwen 时间: 2021-12-26 分类: Linux 有这么一个需求: - 其中 1 台主机,可以访问公网 - 其它 2 台主机,不能访问公网,但是这几台主机处于同一个局域网可以相互访问 大概就是如下图的拓扑图 ![](https://cdn.nowtime.cc/2021/12/26/724184458.png) 想要实现的就是,主机 2、主机 3 能够通过**主机 1**访问到公网 ## 首先在可以访问公网的服务器上配置网关服务器 - 系统:`CentOS Linux release 8.3.2011` - 局域网网段:`192.168.58.0/24` - 本机局域网 IP:`192.168.58.3` ```shell # step 1:关闭并永久禁用firewalld服务 systemctl stop firewalld systemctl disable firewalld # step 2:安装iptables-services yum -y install iptables-services # step 3:开启内核转发 vim /etc/sysctl.conf #添加一条规则 net.ipv4.ip_forward = 1 sysctl -p #使之生效 # step 4:配置iptables转发规则,主要下这个网段要改为你的局域网网段 iptables -t nat -A POSTROUTING -s 192.168.58.0/24 -j MASQUERADE #step 5:保存iptables规则 service iptables save #如果不执行save,重启失效 ``` ## 配置其它不能访问公网的服务器的网关地址 - 假设网卡是:`eth0` 1. 查看本机器的 IP 地址 `ip addr`,如图所示,这台机器的局域网 IP 是 `192.168.58.4` ![](https://cdn.nowtime.cc/2021/12/26/2380189393.png) 2. 修改网卡的网关地址 `vi /etc/sysconfig/network-scripts/ifcfg-eth0` 未修改前是长这样的: ![](https://cdn.nowtime.cc/2021/12/26/2461410265.png) 我们需要改成这样 ``` BOOTPROTO="static" IPADDR="192.168.58.4" PREFIX="24" # 请注意这里是网关地址 GATEWAY="192.168.58.3" # DNS 服务器改成能服务的就行(也就是说内网/公网 IP DNS 服务器都可以) DNS1="223.5.5.5" ``` ![](https://cdn.nowtime.cc/2021/12/26/3508620127.png) 3.然后重启即可生效 ## 测试访问 ![](https://cdn.nowtime.cc/2021/12/26/2846226688.png) ---- 参考文章:https://blog.51cto.com/u_11451275/3225436 标签: Linux, SNAT