由于家中内网服务器没有公网IP,所以需要一台拥有公网IP的云服务器做nat转发。
对于云服务器的带宽来说,是越大越好,但是也要考虑费用问题。普通的4M带宽基本是够用了。下载家中Nas中的文件可以达到400kb左右。
在云服务器中安装配置wireguard
参考文档:How To Set Up WireGuard on Ubuntu 20.04
官方文档:https://www.wireguard.com/quickstart/
更新apt源并安装wireguard
1 2
| apt update apt install wireguard-tools
|
通过wg命令生成公私钥
[!tip]
其中privatekey,publickey可以使用便于记录的文件名称。
1 2 3 4 5 6 7
| wg genkey > privatekey
wg pubkey < privatekey > publickey
cat privatekey
cat publickey
|
创建wg的配置文件
1
| vim /etc/wireguard/wg0.conf
|
配置文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| [Interface] Address = 192.168.1.1/32 ListenPort = 5998 PrivateKey = ******************************** PreUp = echo WireGuard PreUp PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE;echo WireGuard PostUp PreDown = echo WireGuard PreDown PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE;echo WireGuard PostDown
[Peer] PublicKey = ******************************** AllowedIPs = 192.168.2.1/32, 192.168.0.0/24
[Peer] PublicKey = ******************************** AllowedIPs = 192.168.3.1/32
|
配置文件内容注释
Interface
配置
配置名称 |
注释 |
Address |
本服务器想要设置的虚机IP地址 |
ListenPort |
监听端口可以使其他设备通过公网IP家端口连接本服务器 |
PrivateKey |
通过wg命令生成的私钥内容 |
PostUp/PostDown |
其中的eth0需要配置为实际的网卡名称,此处命令用于实现IP转发 |
Peer
配置
配置名称 |
注释 |
PublicKey |
连接设备的公钥,同样通过wg命令生成 |
AllowedIPs |
允许其他设备连接的IP地址。 |
此公钥为需要连接设备的公钥,比如我的笔记本想要连接此服务器,我需要通过生成公私钥的方式再次为我的笔记本生成密钥对,并把我的公钥放在服务器的配置文件中,而本地笔记本的配置文件如下,需要使用笔记本生产的私钥去连接公钥访问。这里配置的不是服务器的公钥!!!
笔记本配置内容如下:
配置时一定要注意密钥对是一一对应的,Interface
中的私钥一定是本设备的私钥,而Peer
中的公钥一定是对方设备的公钥。
1 2 3 4 5 6 7 8 9 10
| [Interface] PrivateKey = ******************************** Address = 192.168.3.1/32
[Peer] PublicKey = ******************************** AllowedIPs = 192.168.1.1/32, 192.168.2.1/32, 192.168.0.0/24 Endpoint = cloud-server-public-ip:5998 PersistentKeepalive = 16
|
通过制定配置文件启动Wireguard服务
1
| systemctl start wg-quick@wg0
|
配置完成后,笔记本中打开Wireguard代理,就可以在任意网络中访问到云服务器了
注意:只是访问到云服务器,以及同样开启Wireguard的其他设备服务器,并不能实现连接家中网络的任意设备,如果要实现连接家中网络的任意设备,需要进行以下配置,将家中的某台服务器当作nat网关实现流量转发。
为本地服务器配置Wireguard
安装操作同云服务器一样,只是配置文件有差别!!!
同样需要再次生产密钥对!!!
配置文件内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| [Interface] Address = 192.168.2.1/32 ListenPort = 5998 PrivateKey = ******************************** PreUp = echo WireGuard PreUp PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens34 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens34 -j MASQUERADE;echo WireGuard PostUp PreDown = echo WireGuard PreDown PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens34 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens34 -j MASQUERADE;echo WireGuard PostDown
[Peer] PublicKey = ******************************** AllowedIPs = 192.168.1.1/32, 192.168.3.1/32 Endpoint = cloud-server-public-ip:5998 PersistentKeepalive = 16
|
通过制定配置文件启动Wireguard服务
1
| systemctl start wg-quick@wg0
|
配置完成
做完上述操作后,便可以实现内网打通,随时访问家中的服务器以及NAS资源了。
关于MacOS可以实现按需访问
[!note]在MacOS中可以实现按连接Wifi的SSID不同来自动连接Wireguard VPN,设置之后可以实现当断开家中Wifi时自动开启Wireguard,回到家中自动断开,直接通过内网访问。
开启方法如下:
编辑Wireguard配置文件,按需选择Wi-Fi,输入你的WIFI名称即可。
