CentOS作为一款稳定的企业级Linux发行版,常被用来充当网络中的网关设备。很多人对网关概念比较模糊,其实说白了,网关就是连接两个不同网络的“关口”linux系统下载,让内网机器可以通过它访问外网。我见过不少公司直接用CentOS服务器做网关,省下了买专业硬路由的钱,效果也相当不错。这里我结合实际运维经验,把配置要点拆开来聊。
网关和路由表怎么设置
要让你CentOS服务器变成网关,第一件事就是搞清楚网卡和路由。通常网关服务器至少有两块网卡,一块接内网,一块接外网。内网网卡要配一个私有IP,比如192.168.1.1,外网网卡则根据运营商分配来配。
配置IP地址可以直接改网卡配置文件centos 网关,路径在/etc/sysconfig/network-scripts/下,文件名通常是ifcfg-eth0或ifcfg-ens33这种格式。你要把内网网卡的GATEWAY留空或者不写,因为网关这台机器自己也需要一条默认路由指向外网出口。
设置默认路由很简单,在/etc/sysconfig/network文件里写上GATEWAY=你的外网下一跳IP就行。如果想临时改,用route add default gw命令也能生效。路由表决定了数据包往哪走,你把默认路由指到外网,内网流量由本地路由表处理,这样基础通信就通了。
开启IP转发才能跨网通信
很多新手卡在这一步:明明IP配对了,路由也设了,可内网机器就是出不去。原因很简单,Linux默认不转发IP包。你需要手动开启内核的IP转发功能。

临时开启用echo 1 > /proc/sys/net/ipv4/ip_forward,但重启后会失效。想要永久生效,得改/etc/sysctl.conf文件,把net.ipv4.ip_forward = 1这一行取消注释或直接加上,然后执行sysctl -p让它立即加载。
我遇到过有人忘记做这一步,排查了半天linux操作系统界面,最后发现就是没开转发。所以这一条必须记牢,它决定了你的CentOS能不能真正扮演网关角色。开了转发后,内网发往外网的数据包才能被送到外网网卡上。
配置iptables做NAT地址转换
光有转发还不够。你的内网机器用的都是私有IP,比如192.168.x.x这种地址,公网上根本不认。所以必须做网络地址转换,也就是NAT,把内网IP换成你外网网卡的公网IP。

CentOS上最常用的工具是iptables。你可以用一条命令搞定SNAT:iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE。这里eth0换成你外网网卡的名字就行。这条规则的意思是,所有从外网网卡出去的包,都把源地址伪装成这个网卡的IP。
如果想更精细控制,也可以用SNAT指定具体IP。比如iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 你的公网IP。这样只有特定网段才会被转换。配置完记得保存规则centos 网关,CentOS 7以上用service iptables save或者直接写入规则文件。
防火墙放行流量别漏掉
iptables除了做NAT,它本身也是个防火墙。默认情况下,FORWARD链可能是DROP策略,这样经过你网关的包会被直接丢弃。你需要在FORWARD链上放行内网到外网的流量。

简单一点的做法是:iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT,以及反向的iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT。这样内网发出去的包能过,回来的应答包也能过。
如果你对内网有安全要求,还可以加上更精细的规则,比如只允许特定端口出去。但普通场景下,上面两条就够了。忘了放行FORWARD链是很常见的翻车点,很多人做完NAT发现还是上不了网,一查日志全是DROP。
配置DHCP让内网自动获取IP
网关服务器通常还兼任DHCP服务器,省得你一台一台去设内网IP。CentOS上装dhcpd服务就能搞定。装好之后改/etc/dhcp/dhcpd.conf,指定子网、地址池、网关地址和DNS。

比如subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; option routers 192.168.1.1; option domain-name-servers 8.8.8.8, 114.114.114.114; }。这样内网机器开启DHCP就能自动拿到IP,网关自动指向你的CentOS服务器。
注意DHCP服务的网卡要绑定对内网那张,启动时systemctl start dhcpd,再设成开机自启。这样整个内网就能自动获取配置,不需要你手动干预。
说回正题,用CentOS做网关确实很灵活,能自定义很多细节,比如限速、流量监控、VPN接入等等。只要把IP转发、NAT、防火墙这几个关键点吃透,一台普通服务器就能变成稳定可靠的网关。现实当中很多中小公司就是靠这种方案撑起整个办公室的网络,成本低而且性能足够用。
