这个月开始放暑假了,闲的没事开始搞起了异地组网,这次记录一下我怎么配置的WireGuard
服务端配置 首先我们要有一台公网IP的服务器,这个服务器哪里都可以买到,只要宽带高就行,宽带低的话速度太慢了 系统我选择的是Debian,使用Ubuntu的话安装WireGuard的方式是一样的
1 2 3 4 5 6 7 8 9 apt update && apt install wireguard iptables -y sysctl -w net.ipv4.ip_forward=1echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE iptables -A FORWARD -i wg0 -o eth0 -j ACCEPT iptables -A FORWARD -o wg0 -i eth0 -j ACCEPT
等待跑完代码即可 接下来就是生成密钥,这个密钥就是我们本地设备与服务器互相连通的密码,这串密码非常的复杂,我们用下面的命令生成 我的设备有Debian(服务端),OpenWrt(客户端),安卓手机(客户端),笔记本(客户端),所以我需要生成四串密钥
1 2 3 4 5 6 7 8 9 10 mkdir -p /etc/wireguard wg genkey | tee server_private.key | wg pubkey | tee server_public.key wg genkey | tee openwrt_private.key | wg pubkey | tee openwrt_public.key wg genkey | tee android_private.key | wg pubkey | tee android_public.key wg genkey | tee computer_private.key | wg pubkey | tee computer_public.key
接下来密钥就生成好了,然后来处理WireGuard的配置文件,配置文件位于/etc/wireguard/wg0.conf请自行新建,下面的配置可以直接抄作业,请自行修改配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [Interface] PrivateKey = 云服务器的私钥(server_private.key)Address = 10.0 .0.1 /24 ListenPort = 51820 [Peer] PublicKey = OpenWrt的公钥(openwrt_public.key)AllowedIPs = 192.168 .2.0 /24 , 10.0 .0.2 /32 PersistentKeepalive = 25 [Peer] PublicKey = 安卓手机的公钥(android_public.key)AllowedIPs = 10.0 .0.3 /32 [Peer] PublicKey = 笔记本的公钥(computer_public.key)AllowedIPs = 10.0 .0.4 /32
配置好文件后我们使用下面的命令启动WireGuard服务并添加开机自启动,@符号后面为配置文件名称,根据我的教程走的话保持默认即可
1 2 systemctl start wg-quick@wg0 systemctl enable wg-quick@wg0
OpenWrt配置 首先安装WireGuard
1 2 opkg update opkg install wireguard-tools kmod-wireguard
接着编辑OpenWrt的网络配置文件,网络配置文件位于/etc/config/network,也是直接抄作业,记得修改配置
1 2 3 4 5 6 7 8 9 10 11 config interface option proto option private_key list addresses config wireguard_wg0 option public_key option endpoint_host option endpoint_port option persistent_keepalive list allowed_ips
接着配置防火墙,不然网络出不去,防火墙的配置文件位于/etc/config/firewall,下面的内容直接复制粘贴即可,什么都不用改,前提是跟着我教程走的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 config rule option name 'Allow-WireGuard-Inbound' option src 'wan' option dest_port '51820' option proto 'udp' option target 'ACCEPT' config zone option name 'wg' option network 'wg0' option input 'ACCEPT' option output 'ACCEPT' option forward 'ACCEPT' option masq '1' option mtu_fix '1' config forwarding option src 'wg' option dest 'lan' config forwarding option src 'lan' option dest 'wg'
前面的文件配置好后就可以重启网络和防火墙然后查看连接了
1 2 /etc/ init .d/ network restart/etc/ init .d/ firewall restart
重启好网络和防火墙后,可以使用wg
命令来查看连接情况
安卓手机配置 安卓手机的话可以下载官方的软件,在下面的网站找到安卓设备类型即可 链接:WireGuard官方下载网站 下载好后安装打开,请按下面的格式填写,未提及的请保持默认
1 2 3 4 5 6 7 8 9 10 11 本地(Interface) 名称: 随便填写都可以 私钥: 安卓手机的私钥(android_private.key) 公钥: 自动生成即可 局域网IP: 10.0.0.4/24 !!!添加节点!!! 远程(Peer) 公钥: 云服务器的公钥(server_public.key) 连接保持间隔: 25 对端: 云服务器的IP:51820 路由的IP地址(段): 192.168.2.0/24, 10.0.0.0/24
保存然后启用就可以连接上了
笔记本配置 我的笔记本是Windows系统,还是刚才的链接,下载Windows设备类型的安装文件即可 链接:WireGuard官方下载网站 安装好后打开WireGuard,选择左下角的新建隧道 然后把下面的配置文件粘贴进去即可,记得修改里面的一些配置
1 2 3 4 5 6 7 8 9 [Interface] PrivateKey = 笔记本的私钥(computer_private.key)Address = 10.0 .0.3 /24 [Peer] PublicKey = 云服务器的公钥(server_public.key)Endpoint = 云服务器的IP:51820 AllowedIPs = 192.168 .2.0 /24 , 10.0 .0.0 /24 PersistentKeepalive = 25
保存后点击连接就大功告成了,这样子就组成一个虚拟的局域网,访问的IP也是跟内网一样不需要改变,流量走的是云服务器的就不用怕没有公网IP