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 077wg 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 ListenPort = 51820 SaveConfig = false 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.confsysctl -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
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
将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 ListenPort = 51820 SaveConfig = false 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服务端
然后 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