loading...
WireGuard接入家庭主机记录
Published in:2025-10-25 | category: WireGuard

0x00前言

最近一段时间不在家,想直连家庭电脑,没有家庭公网IP,如果用rustdesk、todesk、向日葵这些,因为在海外,所以直连需要商业版。本着能省就省的原则,捣鼓了下rustdesk的开源版,自建云服务然后中转,发现效果并不佳,遇到网络有点延迟,画面就开始撕裂模糊。最后还是决定用内网穿透的形式连rdp,但是又感觉不是很安全,所以再套一层vpn接入内网

0x01准备工作

安装wireguard相关包

1
2
apt update
apt install wireguard

0x02服务器相关

1、生成服务器的公私钥

1
2
3
cd /etc/wireguard/
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

2、配置wg0.conf文件

1
vim /etc/wireguard/wg0.conf
1
2
3
4
5
6
7
8
9
[Interface]
# 服务器的配置
PrivateKey = <服务器私钥>
Address = 10.0.0.1/24 # 为 VPN 网络定义一个私有网段
ListenPort = 51820 # 监听的端口,确保防火墙已开放
SaveConfig = false # 我们手动管理配置
# 下面这行是配置 NAT 转发,让客户端能通过服务器上网
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

3、开启IP转发

1
2
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

0x03客户端相关

1、生成客户端的公私钥,这里因为要点对点,所以生成2个客户端的key,一个自己电脑,一个家庭电脑

1
2
3
cd /etc/wireguard/
wg genkey | tee client_a_private.key | wg pubkey > cliena_a_public.key
wg genkey | tee client_b_private.key | wg pubkey > cliena_b_public.key

2、编辑wg0.conf文件

1
2
vim /etc/wireguard/client_a.conf
vim /etc/wireguard/client_b.conf

client_a文件

1
2
3
4
5
6
7
8
9
10
11
[Interface]
# 客户端的配置
PrivateKey = <客户端私钥>
Address = 10.0.0.2/24 # 本地主机配置
DNS = 8.8.8.8

[Peer]
# 服务器的信息
PublicKey = <服务器公钥>
Endpoint = <服务器公网IP>:51820
AllowedIPs = 0.0.0.0/0 # 这表示所有流量都走 VPN。如果只想访问服务器内网,可设为 10.0.0.0/24

client_b文件

1
2
3
4
5
6
7
8
9
10
11
[Interface]
# 客户端的配置
PrivateKey = <客户端私钥>
Address = 10.0.0.3/24 # 这是家庭主机配置文件,要改地址,不然冲突
DNS = 8.8.8.8

[Peer]
# 服务器的信息
PublicKey = <服务器公钥>
Endpoint = <服务器公网IP>:51820
AllowedIPs = 0.0.0.0/0 # 这表示所有流量都走 VPN。如果只想访问服务器内网,可设为 10.0.0.0/24

将2个主机的配置追加到wg0.conf文件

1
2
3
4
5
6
7
8
9
[Peer]
# 客户端的信息
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.2/32

[Peer]
# 客户端的信息
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.3/32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[Interface]
# 服务器的配置
PrivateKey = <服务器私钥>
Address = 10.0.0.1/24 # 为 VPN 网络定义一个私有网段
ListenPort = 51820 # 监听的端口,确保防火墙已开放
SaveConfig = false # 我们手动管理配置
# 下面这行是配置 NAT 转发,让客户端能通过服务器上网
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# 客户端的信息
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.2/32

[Peer]
# 客户端的信息
PublicKey = <客户端公钥>
AllowedIPs = 10.0.0.3/32

3、启动wg服务端

1
wg-quick up wg0

然后 wg show 查看下wireguard状态,如果出现以下内容,有2个peer代表2台主机,interface代表服务器,说明配置无误,前提是必须有transfer数据才算成功

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
interface: wg0
public key: xxx
private key: (hidden)
listening port: 51820

peer: xxx
endpoint: ip:23151
allowed ips: 10.0.0.2/32
latest handshake: 38 seconds ago
transfer: 211.73 MiB received, 2.09 GiB sent

peer: xxx
endpoint: ip:44648
allowed ips: 10.0.0.3/32
latest handshake: 52 seconds ago
transfer: 1.77 GiB received, 186.31 MiB sent

如果是云服务器记得在防火墙里面开放51820 UDP

0x04下载客户端

到官网 https://www.wireguard.com/install/ 下载客户端

导入配置启用,即可完成,这里的配置是刚才生成的client_a和client_b文件,在本地和目标主机生成一个conf文件并把配置复制到里面

0x05接入rdp

因为现在已经接入vpn,所在的网络段在10.0.0.0/32,所以直接本地直连端口即可 10.0.0.3:3389

Next:
java反序列化链总结
catalog
catalog