我想向您请教如何通过 RDP 连接到我的家庭网络 PC。
我当前的设置:
我已经配置了 VPS 服务器并在其上运行 WireGuard VPN。我在那里添加了两个对等点:
- 个人笔记本电脑
- 位于我家网络中并永久连接到 VPN 的 RaspberryPI
现在它的工作原理是:我可以从任何地方通过个人笔记本电脑连接到 VPN,然后我可以通过 SSH 连接到 RaspberryPI,而且由于我在 RaspberryPI 内部,所以我可以看到我所有的家庭网络设备,这非常棒。
我的目标:我想将我的个人电脑连接到 VPN,并能够在浏览器中输入 192.168.1.1,并能够显示我的路由器配置页面。
换句话说,我想通过 VPN 将我所有的本地网络地址路由到 RaspberryPI,然后 RaspberryPI 可以将其路由到我的本地网络。问题是 RaspberryPI 只是配置为常规对等体。也许我需要将其配置为路由器或类似的东西?
我很高兴能得到一些建议!谢谢。
更新-包含我的所有 WireGuard 配置。
WinPC客户端
[Interface]
PrivateKey = XXXXXXXXXX
Address = 10.66.66.2/32, fd42:42:42::2/128
DNS = 9.9.9.9, 1.1.1.1
PostUp = "C:\Program Files\WireGuard\Data\Configurations\vpn-up.bat"
PostDown = "C:\Program Files\WireGuard\Data\Configurations\vpn-down.bat"
[Peer]
PublicKey = XXXXXXXXXX
PresharedKey = XXXXXXXXXX
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = XXXXXXXXXX
PostUp
@echo off
route -p ADD 192.168.0.0 MASK 255.255.0.0 10.66.66.3 METRIC 10
PostDown
@echo off
route DELETE 192.168.0.0
阻止所有非隧道流量复选框被选中。
RaspberryPI 客户端
[Interface]
PrivateKey = XXXXXXXXXX
Address = 10.66.66.3/32,fd42:42:42::3/128
DNS = 9.9.9.9,1.1.1.1
[Peer]
PublicKey = XXXXXXXXXX
PresharedKey = XXXXXXXXXX
Endpoint = XXXXXXXXXX
AllowedIPs = 0.0.0.0/0,::/0
PersistentKeepalive = 25
在 sysctl.conf 中我只取消注释 ipv4 转发:net.ipv4.ip_forward=1
内核IP路由表:网络状态监测
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
WireGuard VPS
[Interface]
Address = 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 53032
PrivateKey = SPnAugHnka45RWLzrDWBeAt8GA2e92yLVf6jeHXy0kw=
PostUp = iptables -I INPUT -p udp --dport 53032 -j ACCEPT
PostUp = iptables -I FORWARD -i enp1s0 -o wg0 -j ACCEPT
PostUp = iptables -I FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostUp = ip6tables -I FORWARD -i wg0 -j ACCEPT
PostUp = ip6tables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = iptables -D INPUT -p udp --dport 53032 -j ACCEPT
PostDown = iptables -D FORWARD -i enp1s0 -o wg0 -j ACCEPT
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
PostDown = ip6tables -D FORWARD -i wg0 -j ACCEPT
PostDown = ip6tables -t nat -D POSTROUTING -o enp1s0 -j MASQUERADE
### Client Windows Laptop
[Peer]
PublicKey = XXXXXXXXXX=
PresharedKey = XXXXXXXXXX=
AllowedIPs = 10.66.66.2/32,fd42:42:42::2/128
### Client RPi server
[Peer]
PublicKey = XXXXXXXXXX
PresharedKey = XXXXXXXXXX
AllowedIPs = 10.66.66.3/32,fd42:42:42::3/128,192.168.1.0/24
内核IP路由表:网络状态监测
0.0.0.0 192.XXX.XXX.1 0.0.0.0 UG 0 0 0 enp1s0
10.66.66.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
169.YYY.YYY.254 192.XXX.XXX.1 255.255.255.255 UGH 0 0 0 enp1s0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 wg0
192.XXX.XXX.0 0.0.0.0 255.255.254.0 U 0 0 0 enp1s0
在 sysctl.conf 中我只取消注释 ipv4 转发:net.ipv4.ip_forward=1
答案1
1. WireGuard 网络上的路由
192.168.1.0/24
将(您的家庭网络)添加到AllowedIPs
从您的个人笔记本电脑到您的 VULTR VPS 的连接设置中,以及从您的 VULTR VPS 到您的 RaspberryPI 的连接设置中。
个人笔记本电脑上的 WireGuard 配置应如下所示:
[Interface]
PrivateKey = <private key for Personal Laptop>
Address = 10.66.66.2
[Peer]
PublicKey = <public key for VULTR VPS>
AllowedIPs = 10.66.66.0/24, 192.168.1.0/24
Endpoint = <VULTR VPS IP address and port>
您的 VULTR VPS 上的 WireGuard 配置应如下所示:
[Interface]
PrivateKey = <private key for VULTR VPS>
Address = 10.66.66.1
ListenAddress = 51820
[Peer]
PublicKey = <public key for Personal Laptop>
AllowedIPs = 10.66.66.2
[Peer]
PublicKey = <public key for RaspberryPI>
AllowedIPs = 10.66.66.3, 192.168.1.0/24
RaspberryPI 上的 WireGuard 配置应该如下所示:
[Interface]
PrivateKey = <private key for RaspberryPI>
Address = 10.66.66.3
[Peer]
PublicKey = <public key for VULTR VPS>
AllowedIPs = 10.66.66.0/24
Endpoint = <VULTR VPS IP address and port>
PersistentKeepalive = 25
2. 家庭网络路由
将(WireGuard 网络)的路由添加10.66.66.0/24
到家庭网络的路由器,使用家庭网络上 RaspberryPI 的 IP 地址作为网关。如果您家庭网络上 RaspberryPi 的 IP 地址为192.168.1.123
,而路由器的 LAN 接口为eth1
,则路由将如下所示:
10.66.66.0/24 via 192.168.1.123 dev eth1
但是,如果你无法在家庭网络上的路由器上添加路由,则可以向 RaspberryPI 添加伪装 iptables 或 nftables 规则(在将数据包转发到家庭网络时,使用 Pi 自己的 IP 地址伪装来自 WireGuard 网络的数据包);像这样的事情就可以解决问题:
iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -j MASQUERADE
编辑有关您的 WinPC 路由问题:
- 一般来说,您不需要在 WinPC 上运行任何特殊的路由命令——只有当您尝试在本地连接到与您尝试远程连接的同一网络时进行测试时才需要它们——所以您可能不想在您的 WireGuard 配置中添加任何路由命令(只需在测试时单独运行它们)。
- 在本地测试时,不要将整个 192.168.0.0/16 网络路由到 WireGuard 接口——a) 它不会覆盖系统路由表中本地网络可能具有的更具体的路由,并且 b) 如果它确实有效,您还会阻止到 Internet 网关(可能是 192.168.1.1)的路由。相反,请尝试仅向一个或两个特定的测试 IP 添加路由(例如,如果您要连接的家庭网络上的设备是 192.168.1.123,则仅向 192.168.1.123 添加路由)。
- 测试时,不要使用该
-p
标志(您不希望在重启后保留您的更改)。