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