[点晴永久免费OA]通往虚无:一条 ip route add blackhole 命令,让恶意IP永坠“网络黑洞”
这是一个用来临时屏蔽特定网络地址的实用方法,使用场景非常灵活,常见的用途有两种:
优化 GitHub 访问:很多国内用户会用它来解决 GitHub 访问异常的问题。因为在国内的网络环境下,部分 GitHub 的服务器 IP 会出现无法正常访问的情况,屏蔽这些有问题的 IP 后,你的服务器就会自动选择其他可用的 IP 来连接 GitHub,从而恢复正常的访问速度和可用性。
屏蔽矿池防挖矿:服务器管理员常用它来防范恶意挖矿行为。很多服务器被黑客入侵后,会偷偷连接矿池地址进行挖矿,大量消耗服务器的算力和带宽。管理员可以把已知的矿池 IP 加入黑名单,阻止服务器连接这些地址,从而阻断挖矿行为。

简单来说,这就是一个网络黑名单。
你只需要告诉服务器:如果要访问这些地址,直接把要发的数据包扔掉,不用尝试连接。
这样一来,访问这些被屏蔽的地址时,会直接提示无法连接,不会浪费时间去反复尝试联网,也不会卡住你的其他网络请求,就像这些地址的流量被吸进了 "黑洞" 里一样,这也是它名字的由来。
下面这些命令就是用来把有问题的 IP 加入黑名单的,你只需要在终端里依次执行这些命令就可以生效:

每一条命令对应屏蔽一个单独的 IP 地址,这些都是用户整理出的、无法正常访问的 GitHub 相关 IP。
# 设置黑洞路由
ip route add blackhole 34.120.177.193
最后这条命令比较特殊,它是把整个 185.199.0.0/16 这个大网段都加入了黑名单。
这个网段里的大部分 IP 都是 GitHub 的服务器 IP,很多都存在访问问题,所以可以一次性屏蔽整个网段,不用一个个手动添加。
# 添加网段黑洞路由
ip route add blackhole 185.199.0.0/16
设置完之后,你可以 ping 一下被屏蔽的 IP 来测试效果。
比如你屏蔽了 172.31.1.1 这个 IP 之后,尝试 ping 它,就会直接报错:
# ping 172.31.1.1
connect: Invalid argument
这个报错不是说你的网络坏了,而是说明屏蔽生效了 —— 你的服务器根本没把访问请求发出去,直接就把它丢进"黑洞"了,所以会直接提示无法连接。
查看路由表,可以看到配置了2条黑洞路由:

这个屏蔽是临时的,如果你之后不想屏蔽这些地址了,随时可以解除。
解除的方法很简单,只需要把之前的 "添加" 命令,改成 "删除" 就可以了。
比如你之前加了 ip route add blackhole 172.31.1.1,想要解除的话,就执行:
sudo ip route del blackhole 172.31.1.1
执行完之后,这个 IP 的屏蔽就取消了,就可以正常访问了。如果你要解除整个网段的屏蔽,也是一样的方法,把对应的 add 改成 del 就行。
阅读原文:https://mp.weixin.qq.com/s/Mx3ELNj9qbaTep3u4dJRyg