有没有办法通过 UFW 优雅地屏蔽所有来自中国的访问?

2017-08-04 05:22:24 +08:00
 dangyuluo

最近有一台北京的 Ubuntu 服务器,提供了某种服务,目标对象是国外用户,因此想屏蔽掉所有国内的访问。

我目前的方法是:

wget http://www.ipdeny.com/ipblocks/data/countries/cn.zone
while read line; do sudo ufw deny from $line to any port 1984; done < cn.zone

但是这样得话就有 7000+的 UFW 规则,我个人有种感觉就是会大大拖慢其余正常请求的速度(如 80 ),毕竟会对者 7000 条逐条匹配。iptables 同理。(也可能不影响效率,是我臆想出来的)

不知道有没有更优雅的办法呢?谢谢大家。

7816 次点击
所在节点    程序员
35 条回复
webjin1
2017-08-04 08:58:13 +08:00
linux 黑洞路由命令
net-tool 用法
route add -host 10.10.0.1 127.0.0.1 -blackhole
iprouter2 用法
$ ip route add blackhole 192.168.32.128/32
supermaxisme
2017-08-04 09:02:20 +08:00
iptables 关于规则的匹配不是逐条比对,
JackBlack2006
2017-08-04 09:07:36 +08:00
好像是叫 Geo IP 来着,碰到过一个外国软件官网就是这样屏蔽 TC 大陆 IP 的

This site is not available.

Block reason: Gateway GEO-IP Filter Alert

IP address: 删除

Connection initiated from country: China
lee015
2017-08-04 09:37:46 +08:00
把中国 ip 段加 ipset 里,直接 iptables 按 ipset reject 掉。参考 ss-rule 代理中国 ip 之外的所有 ip。
中国 ip 段这样取的: https://gist.github.com/jackytang/3c50a376535710aa6f33
dangyuluo
2017-08-04 10:58:48 +08:00
@ETiV 不是 http 服务,是的话就容易了。
lzhr
2017-08-04 11:04:54 +08:00
检测用户系统语言?
knightlhs
2017-08-04 11:21:52 +08:00
智能 DNS 海外来源访问给正确 ip 地址 国内访问 给错误 ip 地址不就行了?
费劲的研究啥防火墙 研究 iptables 干嘛? 走错路了
dangyuluo
2017-08-04 12:05:24 +08:00
@knightlhs 你这番话让我想起了一个故事:某个工厂雇佣了好几个博士,投资了几百万美元就是为了开发一套系统来分拣出空箱子。中国老板则很“聪明”地在流水线旁边放了一个大风扇把空箱子吹走。
结果是第一个老板通过开发积累了经验,得到了更加自动化的生产流程技术。第二个老板则只是图走捷径,到最终也只是一个加工者。

@lzhr 不是 http 服务,语言的方法不太可行。
dangyuluo
2017-08-04 12:06:53 +08:00
@knightlhs 至于为什么不能用现有的智能 NameServer 服务,原因再简单不过了,不是所有设备和软件都提供域名支持的。
d847198075
2017-08-04 12:52:59 +08:00
@knightlhs Good!
CasparLi
2017-08-04 13:38:02 +08:00
@QAPTEAWH 哈哈哈 这个办法可以
sobigfish
2017-08-04 13:44:20 +08:00
onion83
2017-08-05 00:25:28 +08:00
iptables -I INPUT -m geoip -src-cc CN -j DROP
d3js
2017-08-05 07:00:35 +08:00
7000+ 没啥问题吧… 别低估了 Linux 的性能
Admstor
2017-08-05 12:52:59 +08:00
DNS 也是一种方法
不过如果对方不是通过 DNS 解析得到了 IP,那就没用了
这与本机做屏蔽也不矛盾,都可以用起来

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/380303

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX