VPN回家+网络唤醒+远程桌面

Posted at — 2021-12-01

需要:家里有电,有公网IP

1. VPN回家

1.1 安装openvpn和esayrsa(Linux系统)

openvpn是我们要用到的服务端 esayrsa用于证书的制作

1.2 制作证书

我们一共需要7个证书文件(六个必须,一个可选)

ca.crt
server.key
server.crt
dh2048.pem
client.key
client.crt
ta.key(可选)

server端需要的证书有

ca.crt
server.key
server.crt
dh2048.pem
ta.key(可选)

client端需要的证书有

ca.crt
client.key
client.crt
ta.key(可选)

复制配置文件
cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn/
cp -r /usr/share/easy-rsa/ /etc/openvpn/
mv /etc/openvpn/vars.example /etc/openvpn/vars
制作根证书
cd /etc/openvpn ./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
制作服务端证书
./easyrsa build-server-full server nopass
制作客户端证书
./easyrsa build-client-full client nopass
生成ta.key
/sbin/openvpn --genkey secret ./ta.key

1.3 修改服务端配置文件server.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
local 0.0.0.0 # 填服务器真实IP
port 1194     #如果要修改默认端口,一定关闭selinux
proto tcp  #协议udp/tcp
dev tun
ca /etc/openvpn/pki/ca.crt
cert /etc/openvpn/pki/issued/server.crt
key /etc/openvpn/pki/private/server.key
dh /etc/openvpn/pki/dh.pem
server 10.8.0.0 255.255.255.0 # 给客户端分配的IP段
ifconfig-pool-persist ipp.txt # 记录客户端和虚拟ip的映射关系,当客户端重新连接时依然被分配断开之前的IP地址
push "route 192.168.1.0 255.255.255.0"  # 服务端本地真实内网
push "route 10.8.0.0 255.255.255.0" #VPN拨号进来分配的虚拟内网
keepalive 10 120
tls-auth ta.key 0 # 0用于服务端 1用于客户端
cipher AES-256-GCM
persist-key
persist-tun
status  /var/log/openvpn-status.log
log      /var/log/openvpn.log
verb 3 # 日志等级
#explicit-exit-notify 1 #此选项开启只能使用udp协议。否则会报错

1.4 开启路由转发

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

1.5 启动OpenVPN服务

/sbin/openvpn --daemon --config /etc/openvpn/server.conf
或者直接
systemctl enable [email protected]
systemctl start [email protected]
查看端口,检查是否正常运行
netstat -ntlp

1.6 修改客户端配置文件client.conf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
client
dev tun
proto tcp
remote 192.168.1.2 1194 # 填服务器真实IP
resolv-retry infinite
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
tls-auth ta.key 1
cipher AES-256-GCM
verb 3

1.7 配置nat地址转换

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j MASQUERADE nat地址转换,将拨号进来的客户端地址转换为内网地址
iptables -t nat -L查看nat表规则
client.conf改名为client.ovpn

1.8 Windows连接服务端

下载并安装OpenVPN GUI 把上面的五个文件

/etc/openvpn/client.ovpn
/etc/easy-rsa/pki/private/client.key
/etc/easy-rsa/pki/issued/client.crt
/etc/easy-rsa/pki/ca.crt
/etc/openvpn/ta/key

下载到C:\Users\你的用户名\OpenVPN\config\client目录下(client自己创建,名称随意)
最后打开OpenVPN GUI 右键任务栏托盘图标选择client连接即可。

1.9 Android连接服务端

下载并安装OpenVPN Connect
将上面五个文件放到手机的同一个目录,打开软件找到并导入client.ovpn,最后连接即可。

2. 网络唤醒

2.1 设置电脑主板BIOS

将BIOS中的PXE BOOT TO LAN选项启用,有些主板叫PCIE唤醒,网络唤醒。

2.2 设置网卡

右键Windows菜单栏,打开设备管理器,找到网络适配器并展开,找到你的网卡,右键打开属性,打开电源管理,勾选允许此设备唤醒计算机。 手机安装软件wake to lan打开后找到对应主机即可唤醒。

注意:不支持无线网卡

3.远程桌面

以Windows10为例,打开设置,点开系统,找到远程桌面,启用远程桌面。 其他设备可以通过微软官方软件RD Client,实现远程桌面的连接,需要知道目标主机的用户名和密码。

4. 最后

结合上面三个步骤就可以实现这么一个效果,首先通过OpenVPN拨号到家里的内网,然后网络唤醒家里的电脑,再通过远程桌面操作家里的电脑。