iptables默认拒绝允许访问特别的网站该怎么写

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
头像
Andy_baby
帖子: 9
注册时间: 2012-03-06 9:51

iptables默认拒绝允许访问特别的网站该怎么写

#1

帖子 Andy_baby » 2012-03-30 16:23

如题,最近有这样一个需求,写一个客户端程序,这个程序的功能是限制本客户端访问任何外网的网站,但是会给一些特别的允许访问的网站,比如www.baidu.com.
我用iptables来做,我先到的是默认拒绝允许访问特别的策略:
我是这样写的:
1.首先将iptables中所有的规则清空:
iptables -F
iptables -X

2.INPUT和FORWARD保持ubuntu11.04的默认规则ACCEPT,将OUTPUT设置为DROP
iptables -P OUTPUT DROP
这个时候的确不能访问任何网站了。

3.我允许访问www.baidu.com。问题就来了,还不止不一个。我是这么写的:
iptables -A OUTPUT -d www.baidu.com -j ACCEPT
第一个问题:直接命令行直接报错,
iptables v1.4.10: host/network `www.baidu.com' not found
Try `iptables -h' or 'iptables --help' for more information.
不是应该支持域名的吗?

后来我直接改用ip地址,220.181.111.147
iptables -A OUTPUT -d 220.181.111.147 -j ACCEPT

第二个问题:命令行不包错了,可是
我用火狐访问www.baidu.com依然打不开;
然后我直接访问220.181.111.147 能打开百度首页!
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: iptables默认拒绝允许访问特别的网站该怎么写

#2

帖子 lilydjwg » 2012-04-01 22:59

你得放行 DNS 服务器,不然系统不知道 www.baidu.com 的 IP 地址是什么。

最后提示一下,凡「网页打不开」的情况,请给出火狐所给的错误消息,或者 Chrome 的错误代码(需要点击 + 号)。
头像
Andy_baby
帖子: 9
注册时间: 2012-03-06 9:51

Re: iptables默认拒绝允许访问特别的网站该怎么写

#3

帖子 Andy_baby » 2012-04-05 10:05

谢谢!我用火狐访问www.baidu.com依然打不开的错误页面我贴上来:
附件
错误的页面
错误的页面
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: iptables默认拒绝允许访问特别的网站该怎么写

#4

帖子 lilydjwg » 2012-04-05 12:42

Andy_baby 写了:谢谢!我用火狐访问www.baidu.com依然打不开的错误页面我贴上来:
你得放行 DNS 服务器
头像
maivel
帖子: 293
注册时间: 2009-05-01 7:35

Re: iptables默认拒绝允许访问特别的网站该怎么写

#5

帖子 maivel » 2012-04-05 13:55

你现在无法解析域名了
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
然后再
iptables -A OUTPUT -d www.baidu.com -j ACCEPT
我这个人天生愚笨,体内装进一点点东西就会往外面冒,满地都是,一不小心就成了才华横溢。
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: iptables默认拒绝允许访问特别的网站该怎么写

#6

帖子 lilydjwg » 2012-04-05 14:02

maivel 写了:你现在无法解析域名了
iptables -I OUTPUT -p udp --dport 53 -j ACCEPT
然后再
iptables -A OUTPUT -d http://www.baidu.com -j ACCEPT
这样就可以用 DNS tunnel 代理了 ;-)
回复