小企业内,很多都是直接拿1台Linux服务器用iptables做NAT,给内部服务器提供上网的需求。但是这样的NAT网关实际很容易成为单点。所以在设计的时候最好还是需要做一下HA。简单的考虑小规模场景,可以2个服务器起一个keepalived跑VRRP,把网关的IP和SNAT的IP都做浮动IP。这样单机挂掉的时候能自动进行切换。

如果公网地址足够,最好是需用一个段做SNAT地址池。比如64个地址的话就ifcfg-eth0:1~ifcfg-eth0:64,每个配置文件把公网地址配置上去

DEVICE="eth0.X:Y"
BOOTPROTO="static"
ONBOOT="yes"
TYPE="ethernet"
IPADDR=aa.aa.aa.Y
NETMASK=255.255.255.0
VLAN=yes
PEERDNS=no

/etc/sysctl.conf记得配置net.ipv4.ip_forward = 1。

iptables规则如下

*filter
:INPUT ACCEPT [3:309]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [518:57577]
-A INPUT -m state --state RELATED,ESTABLISHED,UNTRACKED -j ACCEPT
-A INPUT -d a.a.a.0/255.255.255.0 -i eth0.X -p tcp -j
DROP
-A INPUT -d a.a.a.0/255.255.255.0 -i eth0.X -p udp -j
DROP

COMMIT

Completed on Tue Apr 15 18:21:48 2014

*nat :PREROUTING ACCEPT [6778:567991] :POSTROUTING ACCEPT [41:3373] :OUTPUT ACCEPT [41:3373]

-A POSTROUTING -s 10.10.0.0/16 -o eth0.X-j SNAT --to-
source aa.aa.aa.1-aa.aa.aa.64

COMMIT