最近对公司网络做了一次小小的调整,启用linux做网关替换原有的路由器,主要原因有3:
1.对实时流量的监控
2.性能需求,发现用路由器的话如果公司内部人员开启BT等p2p软件,连接数巨多,路由器性能 会下降不少
3.vpn的需求,公司内部有OA,同时管理人员要通过vpn连接管理服务器。所以建立了pptp的vpn
条件:网关服务器装两块网卡 eth0:外网卡 eth1:内网卡
相关服务及软件:
1.dhcp服务:dhcpd包,系统自带rpm
2.流量监控工具:iptraf, 系统自带rpm
3.vpn:pptpd包,网上下载的rpm包
4.包转发,地址映射,防火墙规则:用iptables来实现
dhcp配置: 
#cat /etc/dhcpd.conf
allow booting;
allow bootp;
ddns-update-style interim; 
ignore client-updates; 
default-lease-time 86400; 
max-lease-time 259200; 
subnet 192.168.1.0 netmask 255.255.255.0 { 
                                           option routers 192.168.1.1; 
                                           option ntp-servers 192.168.1.1; 
                                           option subnet-mask 255.255.255.0; 
                                           option domain-name-servers 202.106.0.20,202.106.196.115; 
                                           range 192.168.1.100 192.168.1.200;
                                           next-server 192.168.1.2; 
                                           filename "pxelinux.0"; 
}
#cat /etc/sysconfig/dhcpd
DHCPDARGS=eth1
=====================================================================
pptpd配置: 
#cat /etc/pptpd.conf | sed -e /^#/d -e /^$/d 
option /etc/ppp/options.pptpd 
logwtmp 
bcrelay eth0 
localip 172.16.0.1 
remoteip 172.16.0.134-234 
#cat /etc/ppp/options.pptpd |sed -e /^#/d -e /^$/d 
name pptpd 
refuse-pap 
refuse-chap 
refuse-mschap 
require-mschap-v2 
require-mppe-128 
ms-dns 202.106.0.20 
proxyarp 
debug 
lock 
nobsdcomp 
novj 
novjccomp 
nologfd 
# cat /etc/ppp/chap-secrets |sed -e /^#/d -e /^$/d 
wangxiaoming pptpd '159753xxx' * 
lixiaohua pptpd '123456xxx' * 
注意:这里只加了两个用户,可以自定义加载,好像pptpd最多支持100个用户吧。我建的时候查日志看的,没仔细研究,不过应该够了。还有就是pptpd.conf 中的给vpn的ip最好不要和内网重叠。
==========================================================================
iptraf没啥好写的,我主要用到了"lan station monitor",监控内网各主机流量,不过内网再有无线路由器等设备,再做二次路由的话,那就只能监控出口流量了,比较好的办法是把网线插到无线路由的lan口上。不过有些路由器不支持这种接法,那也没办法了。
==========================================================================
iptables 
#cat gateway.sh 
#!/bin/bash 
local_ip=221.xxx.xxx.110 
local_eth=eth1 
lan_net='192.168.1.0/24' 
allow_tcp_ports="22 53" 
modprobe ip_nat_ftp 
modprobe ip_conntrack 
modprobe ip_conntrack_ftp 
add_default(){ 
        echo "1" > /proc/sys/net/ipv4/ip_forward 
        clear_police 
        iptables -P INPUT DROP 
        iptables -A INPUT -i lo -j ACCEPT 
        iptables -A INPUT -i $local_eth -j ACCEPT 
        iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
        iptables -A INPUT -p tcp --dport 1723 -j ACCEPT 
        iptables -A INPUT -p gre -j ACCEPT 
        iptables -A INPUT -p udp --dport 161 -j ACCEPT #我外网有个cacti监控 
} 
add_nat(){ 
iptables -t nat -A POSTROUTING -s 192.168.1.245 -j SNAT --to-source 221.xxx.xxx.111 iptables -t nat -A PREROUTING -d 221.xxx.xxx.111 -j DNAT --to-destination 192.168.1.245 iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 221.xxx.xxx.110 
iptables -t nat -A POSTROUTING -s 172.16.0.0/24 -j SNAT --to 221.xxx.xxx.110 #让vpn拨过来的IP能上网 
iptables -t nat -A PREROUTING -d 221.xxx.xxx.110 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.200:80 
iptables -t nat -A PREROUTING -d 221.xxx.xxx.110 -p tcp -m tcp --dport 22 -j DNAT --to-destination 192.168.1.200:22 
iptables -t nat -A PREROUTING -d 221.xxx.xxx.110 -p tcp -m tcp --dport 20 -j DNAT --to-destination 192.168.1.254:20 
iptables -t nat -A PREROUTING -d 221.xxx.xxx.110 -p tcp -m tcp --dport 21 -j DNAT --to-destination 192.168.1.254:21 
} 
add_local_ports(){ 
for i in $allow_tcp_ports 
    do 
         iptables -A INPUT -s $lan_net -p tcp --dport $i -j ACCEPT 
    done 
iptables -A INPUT -s $lan_net -p icmp -j ACCEPT 
} 
clear_police(){ 
iptables -X 
iptables -Z 
iptables -F 
iptables -t nat -F 
iptables -t nat -X 
iptables -t nat -Z 
} 
case $1 in 
start) 
    add_default 
    add_nat 
    add_local_ports ;; 
stop) 
    add_default 
    add_local_ports ;; 
restart) 
    $0 stop 
    $0 start ;; 
status) 
    iptables -t nat -nL ;; 
*) 
     echo "Usage: $0 start|stop|restart" ;;
esac 
这里有端口映射,有ip映射。够全了吧。哈哈。注意那个“gre”的开放是为vpn开的。
==========================================================================
