linux下的iptables是一个非常优秀的路由软件。要实现路由功能我们首先要开启内核的转发功能。以下代码以centos6为例:

实验环境:

centos6通过固定IP上网。双网卡,其中eth1为内网卡地址为192.168.1.1。eth2为外网卡地址以202.106.0.20代替

1. 开启内核转发。

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

2. 为自己实际环境的内网子网添加静态路由

vim  /etc/sysconfig/static-routes

any net 192.168.2.0/24 gw 192.168.2.1

具体的路由条目以自己公司的实际情况为主

3. 利用iptables的nat功能实现内网地址伪装。

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 202.106.0.20

至此我们的一台linux网关已经准备完毕可以上网了。

4.内网服务器映射(映射内网的SSH服务到公网)

iptables -t nat -A PREROUTING -d 202.106.0.20 -p tcp --dport 22 -j DNAT --to 192.168.1.3

5.限速(以给市场部限速为例)

iptables -F

iptables -t nat -F

shichang_rate=150/second

iptables -N SHICHANG

iptables -A SHICHANG -m hashlimit --hashlimit $shichang_rate --hashlimit-burst 512 --hashlimit-mode dstip --hashlimit-name shichang -j ACCEPT

for ((i = 1; i < 253; i++))  

do

iptables -A FORWARD -d 192.168.2.$i -j SHICHANG

done

iptables -A SHICHANG -d 192.168.2.0/24 -j DROP

至此一台可以限速的linux网关完成了。后期的其他安全设置。可以参考其他资料。