刚调到新单位上班,由于单位对上互联网主机有要求,必须经过领导审批的电脑才允许上互联网,而单位上互联网使用的是小型ADSL路 由器,最多能对30个MAC地址进行绑定,所以领导给了我一台老的服务器,要我设置软路由来代替ADSL路由器。拿到服务器,我简单看了一下配置,再到网上搜了一下软路由的相关资料,觉得用LINUX+IPTABLES来设置是最合适不过的了,于是就在服务器上装了CentOS 4.4(当时手头只有4.4的盘,告诉大家,其实这是我第一次使用LINUX操作系统),装完后开始配置IPTABLES,可是怎么设置都不能实现只让指定MAC地址的电脑上网,在网上找了很多资料都不行。刚调过来,不能让领导失望,于是我在机房里边找资料边调试,在经过了一天半的努力,终于配置成功了(不过我至今对IPTALBLES还不是很熟悉,不过配置成功了还是比较HAPPY的)!现在把配置的几处关键贴出来,一是自己作个总结,二是可以给和我一样要求的朋友一些参考,高手请别笑我菜鸟(才开始学习,希望鼓励!)。
修改/etc/sysconfig/iptables文件代码如下(参考网络中的资料进行的):
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -i eth0 -j ACCEPT #内网网卡
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth0 -j ACCEPT #内网网卡
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A POSTROUTING -o eth1 -j MASQUERADE #传发规则
-P PREROUTING DROP
#--------------------------MAC地址过滤,仅允许下列MAC上网------------------
#将允许的MAC添加到下面,每个MAC一行
-A PREROUTING -m mac --mac-source 00:24:21:B4:33:A7 -j ACCEPT
由于第一次使用LINUX,对IPTABLES还不怎么了解,故不知实现功能是否还有更简单可靠的方法,更不知以上方法代码在安全方面是否有不足,望高手指点。