我的 VPN 设置如下:
########### internet ############## internet ############ LAN ############
# macbook # --------> # VPN server #----------># PC A # -------># PC B #
#10.8.0.6 # # 10.8.0.1 # # 10.8.0.7 # # 192.168..#
########### ############## ############ ############
现在我想用我的 MacBook 访问 PC A 本地 LAN 中的 PC B(A 在 VPN 网络中),我可以用我的 MacBook 访问 PC A,因此 VPN 可以工作,我只需要某种方式将 MacBook 的流量路由到 PC A(我猜)以到达 PC A LAN 中的 PC B,我无法将 PC B 添加到 VPN 网络,因为我没有(物理)访问权限。(我希望这不会太令人困惑)我该怎么做?VPN 服务器和 PC A 正在运行 Debian,
非常感谢您的任何建议:),抱歉我的英语不好
答案1
如果你可以修改 PC A 上的网络然后您可以为其提供多个 IP 地址。保留一个在 10.0.0.x 范围内的 IP 地址,以便您可以通过 VPN 服务器继续与 PC A 通信。在 192.168.xx 范围内为 NIC 添加第二个 IP。
您可能需要在 PC A 上添加一条路由,以指示它应使用该 IP/接口与 PC B 进行通信。无论是通过route add -net
整个 192.168.xx 网络还是route add -host 192.168.a.b. netmask foo.bar.baz.foo
(等等)通过单个特定主机。
现在您应该能够从 PC A 到 PC B 进行通信。
如果您被允许在 PC A 上启用路由,那么您也可以进行设置,以便您可以直接从 macbook 或 VPN 服务器访问 PC B。
您可以使用以下方式检查cat /proc/sys/net/ipv4/ip_forward
或启用它sysctl -w net.ipv4.ip_forward=1
此外,macbook 和 VPN 服务器之间的第一个internet
可能应该是LAN
。10.xxx 范围到互联网的路由非常不传统。:)
答案2
您的设置尚未完全定义。我做出以下假设:
PC A
已接入 VPN和在 192.168.. 子网中。因此PC A
可以正常访问PC B
。
不幸的是,没有提供本地子网PC A
的确切地址。PC B
因为你无法控制PC B
你必须创建一个转发端口打开PC A
您想要访问 PC B 上的每个端口。
在 Debian 上,您应该使用 转发端口iptables
。我在 OpenSUSE 机器上有一个类似的设置,它PC B
通过 VPN 转发 RDP。这将在 上PC A
。
pc_b=192.168...
macbook=10.8.0.6
case "$1" in
'start')
iptables -F FORWARD
iptables -t nat -F
iptables -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# VPN FORWARD of the RDP port (3389)
iptables -A FORWARD -p tcp -s $pc_b --sport 3389 -d $macbook -j ACCEPT
iptables -A FORWARD -p icmp -s $pc_b -d $macbook -j ACCEPT
iptables -A FORWARD -p tcp -d $pc_b --dport 3389 -s $macbook -j ACCEPT
iptables -A FORWARD -j REJECT
# RDP from VPN
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 3389 \
-j DNAT --to-destination $pc_b
;;
'stop')
iptables -F FORWARD
iptables -t nat -F
iptables -P FORWARD ACCEPT
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
'status')
iptables -t nat -L PREROUTING
;;
esac
该脚本接受start
、stop
和status
,并且可以在 rc.d 中用作PC A
tun0
VPN 接口上的运行级脚本。
这将禁止192.168..
子网和 VPN 之间的任何流量,除了明确打开的端口(本例中为 3389)。您不必禁止所有其他转发,但我建议这样做。
这也会将对 的访问转发10.8.0.7:3389
至192.168..:3389
。
如果您不想使用端口转发,则必须以PC B
某种方式更改路由。如果您无权访问PC B
,则需要引导交通从默认网关PC B
到 VPN。一种可能性是将 VPN 的流量从默认网关路由到PC A
。
这仅在您在 MacBook 所在位置使用与PC A
和之间使用的子网不同的子网时才有效PC B
如果您在 MacBook 上使用某种类型的路由器,那么您那里可能也有一个 192.168.. 子网。
对于此设置,您不需要使用以前的脚本。
你仍然需要
echo 1 > /proc/sys/net/ipv4/ip_forward
(与...一样sysctl -w net.ipv4.ipforward=1
)
如何设置路由取决于默认网关和您的 MacBook 上的操作系统。一般来说,它的工作原理如下:
在 MacBook 上(路由至PC B
):
route add 192.168.. gw 10.8.0.7
这仅当 MacBook 上没有 192.168.. 本地子网时才有效!
在 的默认网关上PC B
(通过 路由到 VPN PC A
):
route add 10.8.0.6 gw 192.168..
当然,由于问题中没有给出PC A
和的内部子网地址PC B
,所以我也无法提供准确的路由信息。