编辑:我已经花了 3 天时间研究了处理这个问题的各种可能方法,最后决定采用iptables
。这对我来说就像是最大的秘密。无论我读了多少,我都觉得我错过了一些关键信息,而这些信息对于执行路由前和路由后重定向这样简单的事情来说至关重要。
PC-A
我想使用 Tailscale 路由器将一个位置的100% 网络流量发送到PC-B
另一个位置PC-R
。我很可能需要一个iptables
配置。
设置:
PC-A
无法运行 Tailscale。PC-R
路由器将是运行 Raspbian 并带有单个以太网网卡的 Raspberry Pi。- Raspberry Pi 连接到 Tailscale 网络并创建
tailscale0
虚拟接口。 - 所有传入流量都从 Raspberry Pi 发送到 Tailscale 出口节点(类似于其他 VPN 可以安全地发送所有网络流量的方式)。
由于是虚拟的(因此 PC-A 无法访问),因此网关PC-A
将设置为PC-R
(eth0
LAN) 。tailscale0
因为PC-A
正在将数据发送到PC-R
,eth0
所以我需要将所有PC-R
的传入流量路由到tailscale0
,反之亦然。
知道这一点,我如何设置iptables
或类似地将传入流量路由eth0
到tailscale0
?
答案1
经过进一步搜索后,我发现几乎完全相同的问题在这里得到了毫无疑义的回答:https://serverfault.com/a/431607/189877。
经过所有测试后,这是我的解决方案:
sudo iptables -t nat -A POSTROUTING -o tailscale0 -j MASQUERADE
不确定这到底是做什么的。要删除它,请执行以下命令:
sudo iptables -t nat -D POSTROUTING -o tailscale0 -j MASQUERADE
请注意-D
。
-A
添加和-D
删除。其他方面都是相同的命令。
该规则只是临时的,重启后就会消失。你可能需要iptables-persistent
保留它。不过,我不确定重启后如何正确保留 iptables 规则。