网络 1 有 2 台计算机,PC1 和 PC2。PC1 可以访问 VPN。PC2 则不能。PC2 能否通过 PC1 上的 VPN 路由其流量?
我想到的一个可能的想法是 SSH 隧道。只要我知道我想通过 VPN 访问的端点的有限列表,我就可以设置到这些特定端点的特定 SSH 隧道,并通过 localhost:{port-number-i-defined-for-that-specific-endpoint} 访问它们
这样真的有用吗?还有没有人能想到更简洁的设置?
答案1
(由于您没有提到任何操作系统,我假设都是 Linux)。
您需要确保在 PC1 上启用了数据包转发。要永久执行此操作,请在以下位置添加一个文件/etc/sysctl.d/
(我将其命名为local.conf
):
net.ipv4.ip_forward = 1
您还需要通过编辑来设置其 iptables 以执行 NAT /etc/iptables.rules
(假设您有一个规则文件up
的接口规则):iptables-restore
*nat
-A POSTROUTING -o tun0 -j MASQUERADE
COMMIT
在 PC2 上,您需要通过 PC1 将流量路由到 VPN。假设它有一个以太网接口,将命令添加route
到您的up
和down
命令中/etc/network/interfaces.d/eth0
(或者/etc/network/interfaces
如果您对所有接口使用单个文件,则添加到):
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
broadcast 192.168.0.255
pre-up iptables-restore </etc/iptables.eth0.rules
up route add -net 10.0.0.0 netmask 255.0.0.0 gw 192.168.0.1
down route del -net 10.0.0.0 netmask 255.0.0.0
我上面假设 PC1 应该是192.168.0.1
而 PC2 应该是192.168.0.2
,并且您的 VPN 显示为10.x.x.x
;请根据需要替换您自己的值。
您可能希望第一次手动创建路线,并且只有当您满意它做正确的事情时才将其添加到接口文件中。