最近有一台北京的 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 同理。(也可能不影响效率,是我臆想出来的)
不知道有没有更优雅的办法呢?谢谢大家。
1
stabc 2017-08-04 05:26:42 +08:00
IP ZONE 入库到本地?
|
3
lydasia 2017-08-04 06:02:23 +08:00
7000 还好吧,不过你可以了解下 ipset。
|
4
fox0001 2017-08-04 06:27:50 +08:00 via Android
我们公司也有类似的需求,就是把中国 IP 段,都该为二进制数,放到内存,然后逐一对比。不过仅限于 IPv4
|
5
fox0001 2017-08-04 06:30:12 +08:00 via Android
对了,除非你们有另一台国外服务器可以远程过去,否则,要留一个后门(不过滤自己的 IP )用于登录维护
|
6
WildCat 2017-08-04 06:37:47 +08:00 via iPhone 1
haproxy ?
|
8
QAPTEAWH 2017-08-04 08:04:19 +08:00 via iPhone
主页放敏感词等 q 认证..
|
10
breeswish 2017-08-04 08:13:13 +08:00
ufw 底层是 iptables。然后楼主需要加强算法和数据结构知识,比如防火墙的高效实现这种问题是面向本科生的校招题目: https://www.zhihu.com/question/42700825
|
11
nfroot 2017-08-04 08:15:12 +08:00
|
12
terence4444 2017-08-04 08:15:18 +08:00 via iPhone
你愿不愿意被 Q ?在每个页面的 meta 里塞几个敏感词即可
|
13
49gd 2017-08-04 08:15:54 +08:00
北京的服务器 国外访问效果如何
|
14
goodniuniu 2017-08-04 08:23:02 +08:00
能让网络层面做?路由不可达。
|
15
d847198075 2017-08-04 08:23:55 +08:00 via Android
@terence4444 lz 说了,服务器在北京,怎么被墙?٩(๑`^´๑)۶
|
16
dangyuluo OP |
17
dangyuluo OP @goodniuniu 用的是青云的服务器,如果网络层面 ban 掉的话就是要在操作面板里进行了,7000 条手工操作量不可行。而且也没看到这里的 API。
|
18
terence4444 2017-08-04 08:40:42 +08:00 via iPhone
@d847198075 好吧,想当然了。但是服务器放在国内,国外访问的时候应该也会偶然反向被 Q 吧?
|
19
d847198075 2017-08-04 08:47:16 +08:00 via Android
@terence4444 放国内,有关键词的话,很容易被拔网线了(滑稽)
|
20
ETiV 2017-08-04 08:53:03 +08:00 via iPhone
啥服务
http 的话,用 ningx+geo module,直接给 country == cn 的 403 掉 |
21
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 |
22
supermaxisme 2017-08-04 09:02:20 +08:00
iptables 关于规则的匹配不是逐条比对,
|
23
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 |
24
lee015 2017-08-04 09:37:46 +08:00 via Android
把中国 ip 段加 ipset 里,直接 iptables 按 ipset reject 掉。参考 ss-rule 代理中国 ip 之外的所有 ip。
中国 ip 段这样取的: https://gist.github.com/jackytang/3c50a376535710aa6f33 |
26
lzhr 2017-08-04 11:04:54 +08:00 via Android
检测用户系统语言?
|
27
knightlhs 2017-08-04 11:21:52 +08:00 3
智能 DNS 海外来源访问给正确 ip 地址 国内访问 给错误 ip 地址不就行了?
费劲的研究啥防火墙 研究 iptables 干嘛? 走错路了 |
28
dangyuluo OP |
29
dangyuluo OP @knightlhs 至于为什么不能用现有的智能 NameServer 服务,原因再简单不过了,不是所有设备和软件都提供域名支持的。
|
30
d847198075 2017-08-04 12:52:59 +08:00 via Android
@knightlhs Good!
|
32
sobigfish 2017-08-04 13:44:20 +08:00
|
33
onion83 2017-08-05 00:25:28 +08:00
iptables -I INPUT -m geoip -src-cc CN -j DROP
|
34
d3js 2017-08-05 07:00:35 +08:00 via Android
7000+ 没啥问题吧… 别低估了 Linux 的性能
|
35
Admstor 2017-08-05 12:52:59 +08:00
DNS 也是一种方法
不过如果对方不是通过 DNS 解析得到了 IP,那就没用了 这与本机做屏蔽也不矛盾,都可以用起来 |