OpenWrt

安装

所需插件详见:使用树莓派4B+安装OpenWrt用作旁路由 | Kunyang’s Blog

配置

  • Network → Interface → Add new interface,创建一个wireguard,名字就叫wg0

    创建Interface

  • 点击Generate new key pair,会自动生成一个公钥一个私钥,IP地址可以随便写一个私有地址的网段,我填写192.168.100.1/24,这就是这个VPN的子网,然后设置默认端口,可以随便写,这里我设置55555

    配置Wireguard

  • 然后来到Firewall → General Setting,为wireguard单独创建一个zone,Input, Output和Forward全部开启,由于我目前使用的是单网口,OpenWrt的lan口连接到主路由器,因此可以不设置wan的转发,将package全部转给主路由器即可,如果使用双网口的不要忘记一起配置wan口,使wireguard子网内的设备也能访问wan口,从而正常上网

    Firewall

    配置完之后在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中开放端口

    开放Wireguard端口

  • 如果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

    Peer设置

  • 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