我的路由器 (192.168.1.1) 通过 PPPoE 连接到互联网。服务器 (192.168.1.20) 已安装 OpenVPN 客户端,所有其他计算机都从 DHCP 获取 192.168.1.20 作为默认网关。我的 IP 电话不需要 VPN,这就是我手动将其默认网关设置为 192.168.1.1 的原因。这很完美。
我可以对服务器执行类似操作,使其安装传输以通过 192.168.1.1 下载种子吗?我不熟悉 iptables(我只是复制粘贴规则以在服务器上配置 NAT 以共享 VPN 连接)。
为了更简单:如何添加 iptables 规则以将所有非中转数据包从服务器转发到 192.168.1.1,而不是使用 VPN 连接?提前致谢!
答案1
一个简单的方法是使用单独的用户来运行 torrent 客户端,然后使用 iptables 简单地标记数据包并适当地路由它们。
iptables -t mangle -A OUTPUT -m owner --uid-owner custom_user -j MARK --set-mark 11
完成后,您需要沿着非隧道网关路由带有该标记的数据包:
ip rule add fwmark 11 table 11
ip route add 0.0.0.0/0 table 11 dev whatever_dev_here
替换whatever_dev_here
为您的本地连接的设备名称。
答案2
我花了几个小时终于找到了解决方案。虽然不如之前建议的那么好,但仍然有效。
route del -net 0.0.0.0 netmask 128.0.0.0 dev tun0
我只是删除了 openvpn 客户端创建的默认网关路由。因此,来自机器的所有流量都转到 192.168.1.1,正如我所需要的。
但由于 NAT 伪装,我网络中的其他设备仍然超出了 VPN。
我已将此字符串添加到 /etc/rc.local
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE