CentOS 5.8 配置网关服务器


sys_version:CentOS 5.8x64
eth0:117.38.19.289
eth1:192.168.0.226

nat表需要的三个链:
1.PREROUTING:可以在这里定义进行目的NAT的规则,因为路由器进行路由时只检查数据包的目的ip地址,
所以为了使数据包得以正确路由,我们必须在路由之前就进行目的NAT;
2.POSTROUTING:可以在这里定义进行源NAT的规则,系统在决定了数据包的路由以后在执行该链中的规则;
3.OUTPUT:定义对本地产生的数据包的目的NAT规则.

需要用到的动作选项(真是环境中用大写)
redirect 将数据包重定向到另一台主机的某个端口,通常用实现透明代理和对外开放内网某些服务.
snat 源地址转换,改变数据包的源地址,
dnat 目的地址转换,改变数据包的目的地址
masquerade IP伪装,只适用于ADSL等动态拨号上网的IP伪装,如果主机IP是静态分配的,就用snat

PRERROUTING:DNAT REDIRECT(路由之前)只支持-i,不支持-o,在作出路由之前,对目的地址进行修改
POSTROUTING:SNAT MASQUERADE(路由之后)只支持-o,不支持-i,在作出路由之后,对源地址进行修改
OUTPUT:DNAT REDIRECT(本机)DNAT和REDIRECT规则用来处理来自NAT主机本身生成的出站数据包.

相关配置信息:

1:打开IP转发功能:
echo 1 > /proc/sys/net/ipv4/ip_forward

2:建立nat伪装
MASQUERADE:是动态分配ip时用的IP伪装,所有从eth0口送出的包会被伪装(MASQUERADE)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE (只建立特定子网的nat)

3:建立转发
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT(特定子网的转发)

-------------------------------------------------------------------------------------------------------------------
下面是一个高级用法,相关信息来源于互联网

#限制特定MAC地址外部访问:
iptables -A FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

#解封:
iptables -D FORWARD -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

#限制所有通信:
iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

#解封:
iptables -A INPUT -m mac --mac-source xx:xx:xx:xx:xx:xx -j DROP

#限制特定IP外部访问:
iptables -A FORWARD -s 192.168.0.x -j DROP

#解封:
iptables -D FORWARD -s 192.168.0.x -j DROP

#限制所有通信:
iptables -A INPUT -s 192.168.0.x -j DROP

#解封:
iptables -D INPUT -s 192.168.0.x -j DROP
-------------------------------------------------------------------------------------------------------------------

可能会出现模块无法载入,修改如下行解决
[root@sa ~]# vi /etc/sysconfig/iptables-config
#---------------------------------------------
IPTABLES_MODULES_UNLOAD="no"
#---------------------------------------------

 1 [root@sa ~]# cat gw.sh 
 2 #!/bin/bash
 3 #Date:20130714
 4 #Author:Zhangluya
 5 #Info:Linux gateway server 
 6 
 7 CHECK_IPF(){
 8     #----------------------------------------------------------------------------
 9     FW=`cat /proc/sys/net/ipv4/ip_forward`
10     if [ ${FW} -ne 1 ];then
11         echo "check (ip_forward=0),I will start ip_forward."
12         echo 1 > /proc/sys/net/ipv4/ip_forward
13     else
14         echo "check (ip_forward=1) is ok!"
15     fi
16     #----------------------------------------------------------------------------
17 }
18 
19 CONFIG(){
20     #Load module
21     #/sbin/modprobe    ip_tables 
22     #/sbin/modprobe    iptable_filter 
23     #/sbin/modprobe    iptable_nat 
24     #/sbin/modprobe    ip_conntrack 
25     #/sbin/modprobe    ip_conntrack_ftp 
26     #/sbin/iptables -F INPUT 
27     #/sbin/iptables -F FORWARD 
28     #/sbin/iptables -F POSTROUTING -t nat 
29     #/sbin/iptables -P FORWARD DROP  
30 
31     #set Nat camouflage
32     iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
33     iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE
34     #set Forward
35     iptables -A FORWARD -i eth0 -j ACCEPT
36     iptables -A FORWARD -s 192.168.0.0/24 -m state --state ESTABLISHED,RELATED -j ACCEPT
37     #----------------------------------------------------------------------------
38     echo "Load module and nat rule config is ok!"
39 }
40 
41 case $1 in
42         start|START)
43         CHECK_IPF
44         CONFIG
45         ;;
46         stop|Stop)
47         /etc/init.d/iptables stop
48         echo "iptables stop is ok!"
49         ;;
50         *)
51         echo "====================================="
52         echo "Only Accept:(START|STOP)(start|stop)"
53         echo "====================================="
54         ;;
55 esac   

 

posted @ 2013-07-14 14:25  study-notes  阅读(715)  评论(0编辑  收藏  举报