昨天购买了个3G卡,插上电脑居然几分钟就花掉了500k流量
使用3G卡的一个最大问题就是 流量=金钱,这个对所有网站也是这样的

如何控制这个流量呢?
一个最简单的做法就是加防火墙,只是白名单的流量可以使用,因为大部分后台程序都可能用掉你的流量,你明确自己要用3G网络的流量就最方便了。

比如我们运维使用,则开放22端口请求即可,其它的就可以干掉了
但如果还需要上网呢? 可以用sock5代理,这样也保证所有访问都是正常的

苹果电脑里可以借助第三方软件控制防火墙
http://www.hanynet.com/waterroof/

add 01000 allow ip from me to any dst-port 22 keep-state
add 01004 allow ip from me to any dst-port 3306 keep-state
add 01100 deny ip from any to any
add 65535 allow ip from any to any


sock5代理:

ssh -i .ssh/id_rsa -D 7070 -qfnN user@server_ip


浏览器设置使用sock5代理即可,firefox可以用autoproxy插件
注意,系统里设置代理就可能全局了,不起限流作用了

另外可以参考一下以下内容:

引用
之前接触的都是linux,不管是redhat系列还是debian系列,其防火墙都是iptables,还算比较熟悉。

最近接触了freebsd,发现ipfw最初真的很难理解,特别是你脑海中有iptables身影的时候:)

来来回回,最后还是认认真真看man以及手册比较靠谱。写个东西说一下,备忘,也供有这方面需求的同学参考。

一.iptables中的状态与ipfw中的动态规则

iptables中有NEW表示初次连接即syn,有ESTABLISHED来表示后续的正常会话;

而ipfw中则需要先check-state这样才会有动态规则,接下来的包要keep-state,如果是第一个tcp请求则是setup。那最不好理解的是这里的established包要被拒绝,在ipfw里前面check-state了表明后面的包都通过,但established包是带有ack的包,属于不正常的包,所以要干掉。另外还有个frag的包也干掉,有些不好解释,看下面的英文注释

# Deny any late arriving packets
$cmd 00330 deny all from any to any frag in via $pif

# Deny ACK packets that did not match the dynamic rule table
$cmd 00332 deny tcp from any to any established in via $pif

有时候英文能更准确的表达意思。

二.ipfw enable/disable firewall与service iptables start/stop的区别

在linux的iptables中,你stop了,那这个时候iptables -nvL显示的规则列表就是空的;

而freebsd的ipfw中,你disable了,但你ipfw show的时候规则还是在的,只是不生效,一旦你ipfw enable firewall了它还是会用那些规则。

而iptables -F的效果和ipfw -q -f flush的效果一样,这么一执行把规则都清空了但还有个默认策略,如果默认策略是deny那你就断开了,所以不要单独执行这样的命令:)

三.关于ipfw脚本的一点疑问的研究

如下需求:

1.允许来自192.168.70.0/24的机器ping本机;
2.允许来自192.168.70.0/24,10.10.33.0/24的机器ssh本机;
3.允许来自192.168.70.0/24的机器ftp连本机;
4.不限制output
写出如下脚本:
#!/bin/sh
cmd="ipfw -q add"
inf="em0"
###### init rules
ipfw -q -f flush
$cmd 00100 allow ip from any to any via lo0
$cmd 00200 check-state
$cmd 00300 deny all from any to any frag in via $inf
$cmd 00400 deny tcp from any to any established in via $inf
###### input rules(ssh,ftp,icmp)
$cmd 00600 allow icmp from 192.168.70.0/24 to me keep-state
$cmd 00601 allow tcp from 192.168.70.0/24,10.10.33.0/24 to me 22 setup keep-state
$cmd 00602 allow tcp from 192.168.70.0/24 to me 21 setup keep-state
###### output rules
#$cmd 00700 allow icmp from 192.168.70.0/24 to me keep-state
$cmd 00700 allow all from me to any keep-state
###### defalut rules(log)
$cmd 64000 deny log icmp from any to any
$cmd 65000 deny udp from any to any

这样putty连上这机器,再次执行这脚本就会断开,只有重启会话才能继续连上,如下:

root@freebsd[/home/xysky]#./a.sh
root@freebsd[/home/xysky]#=========在这里断了,右击putty--重启会话,又能连上!!!!!(如果只执行ipfw -q -f flush则会直接断了不会再输出一个#的,输出下面这个#表明上面./a.sh已经执行完毕了)
login as: root=====重启会话,连上了,要登录
Using keyboard-interactive authentication.
Password:
Last login: Sat Jul 23 09:28:38 2011 from 192.168.70.26
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.2-RELEASE (GENERIC) #0: Fri Feb 18 02:24:46 UTC 2011

Welcome To Here:)
root@freebsd[/root]#

我个人起初的猜想是ipfw -q -f slush清空了规则但还有默认规则deny,所以断了,后面中间这些规则生效了所以能连上。但一个脚本一下子就执行完了啊,以前iptables不也是这样嘛,先-F了但由于-P默认是drop,但不会断开啊,而这个该死的ipfw脚本总会断开,非常不爽。

后面仔细看了一下log(需要事先把deny的带上log而且ipfw enable verbose哦),发现

Jul 23 10:12:36 freebsd kernel: ipfw: 400 Deny TCP 192.168.70.xxx:4196 10.10.26.xxx:22 in via em0

而400对应的规则是

00400  11  2000 deny log tcp from any to any established in via em0

我就明白为啥了,因为这个先前连上ssh的包在此刻的ipfw看来,它属于established的包,带ack嘛,但这些包没有经过此刻的check-state处理,所以被干掉了,汗!!!那只能重开一个连接了,那就会经过check-state处理,呵呵,自然也就能正常连上了。

如果不想重开连接也可以,把规则里的established包不要deny掉。那随之而来的问题是,某黑客拿个nmap -sA来扫一下你的ipfw就放过了,太那啥了,所以不建议这么做。

不过一般规则写好也不会随意再运行,所以这个就只当研究吧:)

最后,非常感谢9you的winsky与360的showrun等哥们的帮助,谢谢!


这个也算扩展阅读:

引用
rc.conf 配置启动项:


firewall_enable="YES"
firewall_type="open"
firewall_script="/etc/ipfw.rules"
firewall_logging="YES"



在 /etc/ipfw.rules 添加

###################################

ipfw -q -f flush

# DNS
ipfw add allow udp from me to any 53 out
ipfw add allow udp from any 53 to me in

# DHCP
ipfw add allow udp from me 68 to any 67 out
ipfw add allow udp from any 67 to me 68 in

# ping
ipfw add allow icmp from any to any

# tcp
ipfw add allow tcp from any to any out  
ipfw add allow tcp from any to any established  
ipfw add allow tcp from any to any 22 in  
ipfw add allow tcp from any to any 80 in  
ipfw add allow tcp from any to any 5555 in

deny ip from any to any
#########################################

执行命令: service ipfw restart


参考资料:
1  http://hi.baidu.com/x13ky/blog/item/f92a654a52f14613b2de0522.html
2 ipfw 配置


原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags: ,
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐