前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenWRT搭建WireGuard服务器

OpenWRT搭建WireGuard服务器

作者头像
hiplon
发布2023-10-18 08:24:47
4.2K0
发布2023-10-18 08:24:47
举报
文章被收录于专栏:VNF

OpenWRT搭建WireGuard服务器

By HKL, on Friday 2019-11-29 15:25, tagged: 🏷️Networking 🏷️Operating

本文主要实现在OpenWRT路由器系统下搭建WireGuard服务器方便远程连接,

之前一直是在OpenWRT使用Openconnect VPN,因为是SSLVPN使用起来结合CISCO的anyconnect客户端是很方便的,但是由于现在ISP连这种基于SSL的流量也有可以做识别并封公网IP,所以不得不考虑切换至基于UDP的OpenVPN了->WireGuard VPN。

续:原来的文章发到V站上面大家都说WireGuard的性能更好,然后看了一下资料,如果Peers数不是很多的话其实实现Server/Client类型的Dial Up VPN还是可行的,所以这边也写一下教程方便大家

下面主要分两步:

(1)在OpenWRT安装并配置好WireGuard

(2)配置多Peers方案

那么现在开始吧,目前系统是使用了最新的OpenWRT 19.07.0-rc1, 应该同时适用于OpenWrt 18.06.4

先贴个实现2个Peers连接后的拓扑

1.在OpenWRT安装并配置好WireGuard

先安装好本次所需的全部软件

代码语言:javascript
复制
opkg update
opkg install wireguard luci-proto-wireguard luci-app-wireguard

预设WireGuard参数与网段

代码语言:javascript
复制
WG_IF="wg0"
WG_PORT="51820"
WG_ADDR="192.168.9.1/24"

WG_ADDR定义的网段不要和内网已有的网段冲突

配置防火墙开放相应端口

代码语言:javascript
复制
# Configure firewall
uci rename firewall.@zone[0]="lan"
uci rename firewall.@zone[1]="wan"
uci rename firewall.@forwarding[0]="lan_wan"
uci del_list firewall.lan.network="${WG_IF}"
uci add_list firewall.lan.network="${WG_IF}"
uci -q delete firewall.wg
uci set firewall.wg="rule"
uci set firewall.wg.name="Allow-WireGuard"
uci set firewall.wg.src="wan"
uci set firewall.wg.dest_port="${WG_PORT}"
uci set firewall.wg.proto="udp"
uci set firewall.wg.target="ACCEPT"
uci commit firewall
/etc/init.d/firewall restart

生成服务器和客户端证书

客户端的wgclient.pub就先用Windows的客户端生成一个,并将其传到路由器上面

代码语言:javascript
复制
# 将上图Windows客户端生成的pubkey命名为wgclient.pub
echo KWb2OFp1oc/mhU6Ypzg1OFI8R0Qc/pfCdoLnGMmLdX0= > wgclient.pub
# Generate and exchange the keys
umask u=rw,g=,o=
wg genkey | tee wgserver.key | wg pubkey > wgserver.pub
wg genpsk > wg.psk
 
WG_KEY="$(cat wgserver.key)"
WG_PSK="$(cat wg.psk)"
WG_PUB="$(cat wgclient.pub)"

配置OpenWRT服务器网络

代码语言:javascript
复制
# Configure network
uci -q delete network.${WG_IF}
uci set network.${WG_IF}="interface"
uci set network.${WG_IF}.proto="wireguard"
uci set network.${WG_IF}.private_key="${WG_KEY}"
uci set network.${WG_IF}.listen_port="${WG_PORT}"
uci add_list network.${WG_IF}.addresses="${WG_ADDR}"
 
# Add VPN peers
uci -q delete network.wgclient
uci set network.wgclient="wireguard_${WG_IF}"
uci set network.wgclient.public_key="${WG_PUB}"
uci set network.wgclient.preshared_key="${WG_PSK}"
uci add_list network.wgclient.allowed_ips="${WG_ADDR%.*}.0/${WG_ADDR#*/}"
uci commit network
/etc/init.d/network restart

这样的话,OpenWRT上面就已经完成配置了,接下来修改一下Windows客户端的配置

代码语言:javascript
复制
[Interface]
PrivateKey = 6CJpj1CE2kqmfhJWu9UlzvCKqfm6g9yP8xCM+ggHCU4=
Address = 192.168.9.2/24

[Peer]
PublicKey = EI0o2k+BKTPoVP6e0hbJQSgn3gerwntlsebxLXt1Q3w=
PresharedKey = Ys1gDMulGlZAfW6HVWru5hpxmcQ3BHtWcwYV/pXeW3k=
AllowedIPs = 192.168.9.0/24, 192.168.234.0/24
Endpoint = ddns.example.com:51820

那样正常单Peer就已经通了。

2.配置多Peers方案

因为是方便Dial Up连回家,所以不需要起多个网段了,多个Peers用一个网段是最方便的。接下来的配置都可以通过Luci去完成了。

先根据第一个Peer中使用到的IP地址修改OpenWRT上面Peers的Allow-IP设定

比如这个我在客户端设置 Address = 192.168.9.2/24,那么OpenWRT上面对应的Peer Allowed IPs修改成192.168.9.2/32就可以了,

然后再新增一个Peer,那么先再另外一台终端的WireGuard客户端上面生成一组密钥,并可提前将配置完整

代码语言:javascript
复制
[Interface]
PrivateKey = yBrwJicjkYbOIFtnbhWSoHahhPLivpekcp+u1Gmf72I=
Address = 192.168.9.3/24

[Peer]
PublicKey = EI0o2k+BKTPoVP6e0hbJQSgn3gerwntlsebxLXt1Q3w=
PresharedKey = Ys1gDMulGlZAfW6HVWru5hpxmcQ3BHtWcwYV/pXeW3k=
AllowedIPs = 192.168.9.0/24, 192.168.234.0/24
Endpoint = ddns.example.com:51820

然后将其生成的pubkey通过Web Luci配置到OpenWRT上面去就行了

这样基本就完成了两节点的WireGuard VPN配置,如果需要更多的节点,重复第二步就可以了。

refer:

1.WireGuard basic

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-11-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • OpenWRT搭建WireGuard服务器
相关产品与服务
VPN 连接
VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与腾讯云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,其网关可用性达到 99.95%,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档