![黑洞路由私网流量](https://linux22.com/image/556670/%E9%BB%91%E6%B4%9E%E8%B7%AF%E7%94%B1%E7%A7%81%E7%BD%91%E6%B5%81%E9%87%8F.png)
我有一个私有网络,其中有几台 Linux 路由器,所有路由都通过 OSPF 共享。如何将没有路由的私有网络范围设为黑洞?
换句话说,我要确保我永远不会将 10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/24 路由到默认网关。我不能只为这些网络创建静态接收(黑洞)路由,因为其中一个私有范围内的网络可能会通过 OSPF 进行通告。
如果它在私有范围内,我可以使用 netfilter 来丢弃所有从默认 GW 连接接口传出的流量,但我认为 iproute2/linux 可能有一个更简单或更“正确”的解决方案。
答案1
ip route add blackhole 10.0.0.0/8
ip route add blackhole 172.16.0.0/12
ip route add blackhole 192.168.0.0/16
由于更具体的路由始终优先,因此通过 OSPF 通告的任何范围都将优先于黑洞路由。
思科:
router>sh ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is 0.0.0.0 to network 0.0.0.0
xx.0.0.0/32 is subnetted, 2 subnets
C xx.xx.xx.192 is directly connected, Dialer0
C xx.xx.xx.1 is directly connected, Dialer0
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C 10.10.0.0/30 is directly connected, Tunnel1
S 10.0.0.0/8 is directly connected, Null0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
S* 0.0.0.0/0 is directly connected, Dialer0
S 172.16.0.0/12 is directly connected, Null0
S 192.168.0.0/16 is directly connected, Null0
在 Linux 上:
michael:~$ sudo ip route add blackhole 192.168.0.0/16
michael:~$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_req=1 ttl=64 time=0.238 ms
64 bytes from 192.168.0.1: icmp_req=2 ttl=64 time=0.180 ms
<...>
michael@challenger:~$ ping 192.168.1.1
connect: Network is unreachable
答案2
只要你是沿着这些思路思考的,你就应该了解 BOGON 列表。http://www.team-cymru.org/Services/Bogons/
我可能只会使用您建议的 netfilter/DROP。最安全的做法是将 BOGON 配置保留在外部接口或防火墙上,这样它就只在一个地方,不会破坏内部更改。如果您有防火墙机器或外部路由器,我会将块放在那里。在最后一步。