将每个主机路由替换为 ipset+mark 和一个路由



我需要通过特定连接路由大量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 提供的其他帮助

最新更新