我需要通过特定连接路由大量IP。我想将 IPSET 用于此目的,而不是为每个 IP 添加一个路由。 我正在尝试在machine1
上运行以下示例:
ipset create TEST hash:net
ipset add TEST 8.8.8.8
ipset test TEST 8.8.8.8
#8.8.8.8 is in set TEST.
iptables -I OUTPUT -t mangle -m set --match-set TEST dst -j MARK --set-mark 1
ip rule add prio 100 fwmark 1 lookup 100
ip route add table 100 default dev eth1
请注意,machine1
上的eth1
是 VPN 连接。现在我正在尝试在machine1
上运行ping 8.8.8.8
,但它向我展示了Destination Host Unreachable
.在 vpn 机器上,我可以看到带有 tcpdump 的传入请求,但看起来machine1
忽略或不检索流量。有人可以告诉我缺少什么吗?
upd:在远程机器上,我只观察到 arp 请求,不确定它是否是重要信息......
看起来 linux 内核的Reverse Path Filtering
功能有问题,其中某些系统上的默认值设置为验证路由。它使您的网络更安全,但是...在标记数据包并通过抽象规则路由它们的情况下,可能需要将rp_filter
切换到2
,这将允许接受非对称路由的数据包。
你需要设置的只是ti接口,通过它计划发送/接收流量。
https://access.redhat.com/solutions/53031 提供的其他帮助