|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
×
我用的是老大做的coyote最新修改版
我的rc.local文件内容:
#!/bin/sh
#
# Coyote local command init script
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 800kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.0.11 flowid 1:1
iptables -A FORWARD -s 192.168.0.11 -m time --timestart 1:00 --timestop 15:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
iptables -t nat -A PREROUTING -s 192.168.0.11 -m mac --mac-source ! 00:10C6:C9:69 -j DROP
iptables -t nat -A PREROUTING -s 192.168.0.11 -j ACCEPT
iptables -t nat -A PREROUTING -i $IF_LOCAL -j DROP
解释如下:
tc qdisc add dev eth0 root handle 1: htb r2q 1
tc class add dev eth0 parent 1: classid 1:1 htb rate 800kbit burst 10k
tc filter add dev eth0 parent 1: protocol ip prio 16 u32 match ip dst 192.168.0.11 flowid 1:1
限定192.168.0.11的带宽在100kB/s左右
iptables -A FORWARD -s 192.168.0.11 -m time --timestart 1:00 --timestop 15:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
上面这条IPtables命令的使用,解决了限制时间段上网的问题。上面的设定允许上网的时间范围是每天早上10:00到晚上20:00。为什么会出现这种情况呢?因为Iptables的time扩展功能增加了对时间的匹配,可以指定某条规则在什么时间触发,但这个功能目前还不能处理时区,使用时只能使用UTC时间。
iptables -t nat -A PREROUTING -s 192.168.0.11 -m mac --mac-source ! 00:10C:D6:C9:69 -j DROP
iptables -t nat -A PREROUTING -s 192.168.0.11 -j ACCEPT
IP地址192.168.0.11与MAC地址是00:10:DC:D6:C9:69的网卡帮定,允许上网
注意:iptables -t nat -A PREROUTING -i $IF_LOCAL -j DROP是对所有不符合规则的信息阻断,其中的 -i $IF_LOCAL ,这样写解决了设定规则后ssh远程连不上的问题;解决了通过ssh连接,用web远程无法访问coyote的问题;解决了内网半条服务器不能回流(比如在内网搜索自己半条服务器的外网地址,搜不到)。
总结:
在/etc/rc.d/rc.local文件中,每条命令的功能要同时实现,跟每条命令所处的位置有关,即规则在比对时是从文件的第一行开始的,规则被比对的先后顺序,直接影响到想要达到的目的;同时在文件中的最后一句也至关重要。是经过它上面的所有规则过滤后到达最后这条语句需要处理的数据包。如何处理这些数据包同样也影响最终的结果。 |
|