前言

欢迎来到我的小破站,这应该是我在小站上写的第一篇文章,我先来介绍下我为什么想要搭建一个博客:首先就是因为我平时喜欢瞎折腾,像什么软路由啊、黑苹果啊、什么什么奇淫技巧啊等等等等,即便是当时查阅了很多资料,也只是当时会了而已,时间一长,就又给忘了,而我又不是经常记笔记;说到笔记,还有一个原因就是我用的笔记软件比较分散,像小米的记事本、苹果的记事本、印象笔记、Notion等等都有使用过,总感觉差点意思,于是就想自己搭一个个人博客,用来记录一下自己的笔记,当然,如果我的笔记也能够帮助到更多的人,那这笔记也没白积累哈。在以后的工作中,还是在自己的折腾中,都会将我遇到的问题及一些经验记录在这里,欢迎大家围观。

这篇文章我就记录一下我个人的网络配置,我的需求不一定适合所有人,也可能说的不是特别详细,但重要的还是提供一个思路,有思路了剩下的都好办了,另外异地组网也是我搭建本博客的一个前提条件。

搭建需求

我的网络使用场景大致可以划分为:家、出租房、公司,外加一个阿里云服务器。目前我的需求是将以上几个环境的网络进行异地组网,不同内网环境下的设备可以互相访问。阿里云服务器只要能访问到出租房搭建的服务就可以。

环境准备

  • 网络环境:公网IP

  • 软件:WireGuard

  • 硬件:可以安装WireGuard的设备,这里我的设备是OpenWrt和爱快

环境介绍

  • 公网ip:这个是前提条件,没有公网ip,那也折腾不了这些,目前老家有一条电信动态公网的光纤,配合爱快的动态域名解析,可以实现域名+端口访问。目前来说IPv4的公网比较难申请,我也是扯皮了一段时间才搞到手的,据说IPv6自带公网,但还没有折腾过,先挖个坑。

  • WireGuard:这个才是本次的主角,实现原理没有深挖太多,大概理解就是基于UDP协议、端到端、轻量的异地组网工具。配置ip就相当于是修改了本地的路由,指定数据包走哪一条线,简单总结就是打洞。

  • OpenWrt:用于安装WireGuard,实际可玩的东西非常多。

  • 爱快:我的网络是动态公网,所以需要做动态域名绑定,实际还加了一个端口转发。

网络拓扑

不是专业的,网络拓扑大概就长这个鸟样子

大概操作流程是先在老家内网的OpenWrt上搭建一个WireGuard作为服务端,经由爱快的端口映射将wireguard服务端口暴露在公网,再将出租房内的OpenWrt和公司电脑作为客户端去连接服务端,这样就达到了异地组网的效果,最后再配置OpenWrt的转发,将数据包转发到各自的内网环境中,这样就可以实现在公司直接访问到两个内网中的设备;

另一组的组网是将阿里云服务器作为服务端,出租房内的OpenWrt作为客户端进行异地组网,我只需要阿里云服务器能访问到内网中的Server设备即可,我实际部署的项目就在我本地的这台设备上,阿里云服务器只做了个反代。

配置组网一

配置爱快

  • 添加动态域名

  • 配置端口转发到WireGuard

OpenWrt安装WireGuard

opkg update
opkg install wireguard

配置WireGuard

配置OpenWrt的WireGuard服务端

  • 添加新接口

  • 服务端配置

  • 添加对端(客户端)配置

  • 公钥和秘钥是在客户端生成的一对儿秘钥(私钥可以不配)

  • 预共享秘钥配不配都可以,如果配置预共享秘钥则在客户端服务端都需要添加相同的秘钥

  • 允许的ip是指路由哪些ip或ip段,相当于路与表,这里添加的是对端的内网网段和wireguard网段

配置OpenWrt的WireGuard客户端

添加基本配置

  • 私钥和公钥是客户端生成的一对儿秘钥

  • 监听端口随意,因为它不是被连接方,无所谓

  • ip地址:我的理解是当前客户端在wireguard内网中的ip地址。因为我这台OpenWrt要添加两个组网,所以添加了两个ip。

添加对端

  • 公钥是服务端生成的公钥

  • 预共享秘钥与服务端填写相同

  • 允许的IP:可以理解为一个路由表,将那些ip或ip段路由到wireguard

  • 端点主机、端点端口即是服务端的地址和端口

配置Windows的WireGuard客户端

[Interface]

PrivateKey = 客户端生成的私钥

Address = 当前客户端在wireguard内网中的地址

[Peer]

PublicKey = 服务端公钥

PresharedKey = 预共享秘钥

AllowedIPs = 允许路由的地址

Endpoint = 服务端地址:端口

配置内网转发

配置服务端和客户端的内网转发

  • 允许将wireguard接口的流量转发到内网及内网中的流量转发到wireguard

  • 开启从内网到wireguard的ip动态伪装

配置组网二

Ubuntu安装WireGuard

sudo apt update
sudo apt install wireguard

配置WireGuard

配置Ubuntu的WireGuard服务端

生成秘钥对

wg genkey | sudo tee /etc/wireguard/privatekey | wg pubkey | sudo tee /etc/wireguard/publickey

编辑配置文件

sudo vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.0.20.1/32
ListenPort = 服务端wireguard端口
PrivateKey = 服务端生成的私钥
[Peer]
PublicKey = 客户端的公钥
PresharedKey = 预共享秘钥
AllowedIPs = 允许路由的ip或网段
Endpoint = 171.11.3.117:20009  #配的对不对都行
PersistentKeepalive = 25

启用WireGuard接口

sudo wg-quick up wg0


增加开机启动

sudo systemctl enable wg-quick@wg0

配置OpenWrt的WireGuard客户端

略(懒+没必要)配置方式与上面的客户端配置流程相同

配置OpenWrt内网转发

上面已经配置过了.....

END