OpenWrt
安装
所需插件详见:使用树莓派4B+安装OpenWrt用作旁路由 | Kunyang’s Blog
配置
-
Network → Interface → Add new interface,创建一个wireguard,名字就叫
wg0
-
点击Generate new key pair,会自动生成一个公钥一个私钥,IP地址可以随便写一个私有地址的网段,我填写
192.168.100.1/24
,这就是这个VPN的子网,然后设置默认端口,可以随便写,这里我设置55555
-
然后来到Firewall → General Setting,为wireguard单独创建一个zone,Input, Output和Forward全部开启,由于我目前使用的是单网口,OpenWrt的lan口连接到主路由器,因此可以不设置wan的转发,将package全部转给主路由器即可,如果使用双网口的不要忘记一起配置wan口,使wireguard子网内的设备也能访问wan口,从而正常上网
配置完之后在Interface → wg0 → Firewall Settings就能看到
wg0
被单独分配到了自己的zone -
在Network → Firewall → Custom Rules添加一条自定义命令
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o eth0 -j MASQUERADE
这条命令的意思是针对子网
192.168.100.0/24
内的数据包,当数据从eth0
也就是外接端口转发出去的时候,将数据包的源地址伪装成路由器的公网IP -
如果OpenWrt是主路由,则需要在Firewall → Traffic Rules中开放端口
-
如果OpenWrt是旁路由,则需要在主路由上做端口转发
-
在Network → Interface → wg0点击Edit,然后转到Peers,点击Add peer
- 添加Description,比如我的Windows台式机
- 我们可以点击创建新的密钥对
- 建议创建Preshared Key
- Allow IPs就是这个节点在这个VPN网络的IP地址,我输入
192.168.100.2/32
,注意掩码一定是32,一个设备应该只含有一个IP地址 - Keep Alive可以设置为25
-
Reload一下
wg0
接口
Windows或Mac Os
安装
从这里下载Wireguard App
配置
-
在OpenWrt → Network → Interface → wg0 → Edit Peer中可以很方便地为每个终端导出配置文件,复制粘贴在Windows客户端的wireguard中就可以了
-
这是Windows的配置例子
[Interface] PrivateKey = [Windows_PRIVATE_KEY] ListenPort = Port Address = 192.168.100.2/32 # 这个IP是Windows在wireguard子网的IP DNS = [OpenWrt IP] # 可以设置为Wireguard Server(即OpenWrt)的真实IP地址 [Peer] PublicKey = [OpenWrt_PUBLIC_KEY] PresharedKey = [Windows_PSK] AllowedIPs = 192.168.100.0/24 # 我的Windows和主路由在同一个子网,因此可以设置只有192.168.100.0/24的流量经过VPN Endpoint = [Home Public IP]:Port # 公网IP,注意这个Port与上面的Port可以不一样 PersistentKeepalive = 25
MacBook
我的MacBook一般是带出家门使用的,因此不常常在我家的内网,除了AllowedIPs
设置为所有流量经过VPN以外其他与上面相同
[Interface]
PrivateKey = [MacBook_PRIVATE_KEY]
Address = 192.168.100.3/32
ListenPort = PORT
DNS = [OpenWrt IP]
[Peer]
PublicKey = [OpenWrt_PUBLIC_KEY]
PresharedKey = [MacBook_PSK]
AllowedIPs = 0.0.0.0/0, ::/0 # All traffic
Endpoint = [Home Public IP]:Port
PersistentKeepAlive = 25
Linux
安装
sudo apt update
sudo apt upgrade
sudo apt install wireguard
配置
-
进入
/etc/wireguard
,并生成密钥对,不过推荐使用OpenWrt的Web manager来生成密钥对(使用OpenWrt集中的管理密钥对方便,但是不安全)sudo -i cd /etc/wireguard umask 077 wg genkey | tee privatekey | wg pubkey > publickey
-
编辑配置文件
wg0.conf
[Interface] PrivateKey = [LINUX_PRIVATE_KEY] Address = 192.168.100.4/32 ListenPort = Port DNS = [OpenWrt IP] [Peer] PublicKey = [OpenWrt_PUBLIC_KEY] PresharedKey = [LINUX_PSK] AllowedIPs = 192.168.100.0/24 # 我的Linux作为服务器也一直在家里 Endpoint = [Home Public IP]:Port PersistentKeepAlive = 25
-
启动Wireguard
sudo wg-quick up wg0