我有一个VPN,我的服务器经常将数据发送到通过VPN路由的私有IP地址。当OpenVPN建立或死亡时,它将启用/禁用这些路由。
我想要空路由的私有IP范围从外出的主要互联网接口(eth0)。在不干扰来自VPN软件的路由命令的情况下,有什么简单的方法可以做到吗?
伊普塔莱是不会这么做的。我试过了
iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT但是iptables在指定输出链中的接口时不起作用。
有谁知道是否有一种方法只将虚拟路由添加到特定接口(eth0),而不干扰可能使用该路由的其他接口?
Ps-我知道192.168.0.0/16不是可以因特网路由的,但是出于安全原因,我希望确保在另一个本地服务器或网络设备开始监听私有子网的情况下不会有任何数据泄漏。
发布于 2016-08-03 21:54:06
iptables规则中的接口规范是向后的。
你具体说明:
iptables -A OUTPUT -i eth0 -p tcp -d 192.168.0.0/16 -j REJECT使用-i匹配在命名接口上进入系统的通信量。
相反,您希望匹配在命名接口上离开系统的流量,这是用-o完成的。
iptables -A OUTPUT -o eth0 -p tcp -d 192.168.0.0/16 -j REJECT(您可能不希望-p tcp在其中,否则可能会通过非TCP通信。)
发布于 2016-08-04 01:32:03
除了Michael的答案之外,我认为应该阻止FORWARD链中的通信量,因为OUTPUT链只适用于本地生成的数据包和防火墙。据我所知,它不适用于路由数据包。
发布于 2016-08-08 23:50:01
您已经得到了使用iptables进行操作所需的答案。
如果您想在路由上这样做,一个好方法是为192.168.0.0/16创建一个路由,并让您的vpn服务器向您发送两条更具体的路由,在您的示例中,这两条路由是192.168.0.0/17和192.168.128.0/17。
/16路由将是固定的和空路由的:
ip route add blackhole 192.168.0.0/16而您的vpn服务器(或vpn-up脚本)将为您提供其他的:
ip route add 192.168.0.0/17 via <VPNGW>
ip route add 192.168.128.0/17 via <VPNGW>这实际上是def1选项在OpenVPN中所做的,以覆盖默认网关,而不影响现有路由。
https://serverfault.com/questions/793723
复制相似问题