iptables 的小问题

蔚蓝一片 发布于 2012/11/27 18:43
阅读 191
收藏 0

hi 大家好 

我有个小问题,但是的确难住了我。

我想实现 iptables 做软路由,并通过MAC 地址来限制上网用户

没做什么 特别的限制


Chain FORWARD 上默认是DROP,但是我已经给我测试的网络开放了。(我直接开的网段)

如果我把Chain FORWARD 改成ACCEPT 就没问题。但那样 我就没法用MAC地址 限制了吧?

另外,我曾经在INPUT 上用MAC地址限制过,客户端 ping 不能这台主机,但是可以访问外网.

那位好心人给说说吧 谢谢啦~

[root@localhost ~]# iptables -L -nv
Chain INPUT (policy DROP 10004 packets, 1270K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 6675  576K ACCEPT     all  --  eth2   *       0.0.0.0/0            0.0.0.0/0           MAC B8:AC:6F:41:FD:B5 
 1195 88049 ACCEPT     all  --  *      *       172.16.0.0/16        0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 


Chain FORWARD (policy DROP 2729 packets, 250K bytes)
 pkts bytes target     prot opt in     out     source               destination         
    3   180 ACCEPT     all  --  eth2   *       172.16.0.0/16        0.0.0.0/0           


Chain OUTPUT (policy ACCEPT 34170 packets, 2594K bytes)
 pkts bytes target     prot opt in     out     source               destination


加载中
0
wzk
wzk

流量是双向的,看你应该是把来源是172.16.0.0/16的流量放行,也就是本地的包可以通过路由外发,但外面返回的包因为policy是DROP,丢掉了,policy是ACCEPT就没问题

解决的办法可以是把状态是established和related的包放行

iptables -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT

或者把目的的是172.16.0.0的包放行

iptables -A FORWARD -d 172.16.0.0/16 -j ACCEPT

但是经过了反向的SNAT,我不知道后面这条可不可行.

蔚蓝一片
蔚蓝一片
感谢你的回复,你对我的帮助很大,这个问题困扰了我有一段时间啦, 你是正确的!
0
littlekam
littlekam
iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
0
蔚蓝一片
蔚蓝一片
按wzk 的办法我的问题解决啦! 也谢谢littlekam 的回复 ,虽然在理解上好像和我的题目有点出入。
0
bingl
bingl
littlekam    的是对的。
返回顶部
顶部