小型高可用NAT网关设计

小企业内,很多都是直接拿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规则如下

<br />*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