前两天配置了一台 CentOS 7 的服务器双网卡双IP,一个内网IP,一个外网IP。这样为这台服务器配置转发规则,内网网段的所有机器都可以通过它作为网关转发来上网了。

配置双网卡IP

首先需要做的是确保双网卡都能正常工作并且已经开启,这里可以使用 ifconfig 来查看网卡工作状态。确保有两块网卡正常工作,然后就可以去 /etc/sysconfig/network-scripts/ 目录下配置每块网卡的 IP 了。

该机器的外网 IP 配置为 166.111.80.x,网关为 166.111.80.gate,子网掩码255.255.255.0;内网IP配置为 192.168.3.y,网关为 192.168.3.gate,子网掩码255.255.255.0。

vim /etc/sysconfig/network-scripts/ifcfg-eth0
HWADDR=A0:42:3F:32:F0:5C
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes 
ONBOOT=yes   #开机自启动
IPADDR=166.111.80.x  #外网IP
PREFIX=24  #子网掩码为255.255.255.0
GATEWAY=166.111.80.gate  #网关
DNS1=166.111.8.28 #根据设置自己的DNS设置

保存后配置内网IP

vim /etc/sysconfig/network-scripts/ifcfg-eth1
HWADDR=A0:42:3F:32:F0:5D
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes 
ONBOOT=yes   #开机自启动
IPADDR=192.168.3.y  #内网IP
PREFIX=24  #子网掩码为255.255.255.0
#GATEWAY=192.168.3.gate  #注意:内网网卡网关不要填写或者注释掉,否则两个网卡同时启用后上不了外网
DNS1=166.111.8.28 #根据设置自己的DNS设置

配置双网关路由表

目前系统默认网关是外网网关,内网IP是不能正常访问的,需要增加两个路由表,实现双网关正常访问。

vim /etc/iproute2/rt_tables

增加如下内容:

252  net2
251  net3

修改 /etc/rc.local,动添加静态路由规则,让网络请求哪里进来的,就从哪里出去。

ip route flush table net2
ip route add default via 166.111.80.gate dev eth0 src 166.111.80.x table net2
ip rule add from 166.111.80.x table net2

ip route flush table net3
ip route add default via 192.168.3.gate dev eth1 src 192.168.3.y table net3
ip rule add from 192.168.3.y table net3

这样,双网卡双IP应该就配置好了,重启网络服务检测一下。在内网用内网IP访问,在外网用外网IP访问应该可以正常连接。

service network restart

配置转发规则

添加SNAT 规则,POSTROUTING 经过路由的源地址为192.168.3.0/24包把源地址改变为166.111.80.x。

iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -j SNAT --to-source 166.111.80.x
iptables -A FORWARD -s 192.168.3.0/24 -j ACCEPT
iptables -A FORWARD -d 192.168.3.0/24 -j ACCEPT
service iptables save

然后重启重启防火墙。

service iptables restart

为了防止别人修改,可以把上述指令写入到 /etc/rc.local,每次开机启动时会重新执行。 此外,还要打开 Linux 内核转发功能,使Linux内核的IP层能够数据转发。直接修改 /etc/sysctl.conf 增加 net.ipv4.ip_forward=1 或者直接执行下面指令:

sysctl net.ipv4.ip_forward=1

重启一下网络服务

service network restart

配置内网机器访问外网

将内网某台机器的网关设置为 192.168.3.y,重启网络服务,应该就可以正常访问外网了。

参考资料

https://mr21.cc/network-technology/centos-two-gateway-configration.html https://my.oschina.net/wellben/blog/75358 http://chopper.blog.51cto.com/3946170/1175724 http://www.lshell.com/2015/08/iptables-nat.html http://www.cnblogs.com/Qing-840/p/5501533.html