完整配置wireguard回家的教程

在Openwrt中配置Wireguard实现全局回家

前提条件

  • 已刷好Openwrt固件的路由器
  • 有公网ip

1.配置Openwrt端接口(可以理解为服务端)

  • 点击网络-接口-添加新接口请添加图片描述

  • 命名为wg0,接口协议选择Wireguard VPN请添加图片描述

  • 保存后进入接口设置页面

使用命令行工具获取私钥

在开始菜单右键,点击Windows Powershell(管理员)
在命令行输入ssh root@软路由ip进入软路由后台
初次ssh登录时会有提示,输入yes即可

请添加图片描述

  • 登录后输入wg genkey生成私钥
    请添加图片描述

  • 复制私钥粘贴到接口设置中,设置监听端口(注意设置的端口不能被其他服务占用)
    注意:ip地址设置一定不能与现有网段冲突(例如家里的网段是192.168.1.0/24,可以设置192.168.2.1/24)

请添加图片描述

2.配置Windows端

下载并安装Wireguard客户端

  • 下载安装Wireguard客户端:https://www.wireguard.com/install/

  • 启动客户端,点击新建空隧道
    请添加图片描述

  • 命名为wg0(这里因为我已经有一个wg0了,所以改成wg1)

请添加图片描述

  • 复制公钥,回到Openwrt端,点击左下角添加按钮,粘贴公钥,设置如图

请添加图片描述

获取openwrt的公钥

  • 复制openwrt的私钥,回到powershell,输入echo "openwrt的私钥" | wg pubkey得到公钥

回到Wireguard客户端,根据模板进行修改

请添加图片描述

[Interface]
PrivateKey =  #自动生成的私钥(不要修改!!!)
Address = #填写刚才填写的`允许的ip` 
DNS = #openwrt的WG一般设置中设置的ip地址,也可以设置为openwrt的ip地址

[Peer]
PublicKey = #openwrt的公钥
AllowedIPs = #允许走wirguard的ip段,例如192.168.2.0/24,0.0.0.0/0(全部允许)
Endpoint = #服务器地址:端口

修改完成后需要回到接口设置处,先关闭WG0接口再连接

请添加图片描述

  • 当出现握手时间时表示成功连接
    请添加图片描述

如果要实现访问内网中其他设备还要在防火墙中添加自定义规则(这里lan口如果没有桥接就填eth0)

iptables -t nat -A POSTROUTING -s 192.168.40.0/24 -o br-lan -j MASQUERADE

-t nat -A POSTROUTING -s 192.168.40.0/24 -o br-lan -j MASQUERADE`

最后引用恩山论坛的一句总结:节点之间【公钥互换,私钥自留,预共享密钥相同】, 这是wireguard配置的精髓。
### 如何将程序烧录到STM32F103C8T6最小系统板 #### 准备工作 为了成功地将程序烧录到STM32F103C8T6最小系统板上,需准备以下工具和材料: - STM32F103C8T6最小系统板 - ST-Link V2 或者其他兼容的ST-Link调试器/编程器 - USB数据线用于连接计算机与ST-Link设备 - 开发环境(如Keil MDK, IAR Embedded Workbench, STM32CubeIDE) #### 烧录过程 对于STM32系列微控制器而言,通常会把Bootloader放置于`0x8000000`地址处[^1]。然而,在实际应用中,大多数情况下并不直接操作Bootloader而是利用现成的开发工具链来完成整个编译链接以及最终的目标文件生成。 当准备好上述提到的所有必要组件之后,可以按照下面的方法来进行固件上传: 1. 将ST-Link通过Micro USB接口连接至个人电脑,并确保驱动已正确安装; 2. 使用跳帽或者杜邦线将ST-Link上的SWDIO、SWCLK、GND、NRST四个信号端子分别对应接到目标板相同名称的位置上去;如果采用的是四针排母形式,则可以直接插上即可[^2]; 3. 打开所使用的集成开发环境(IDE),加载项目工程并构建得到`.hex`或`.bin`格式的目标二进制映像文件; 4. 启动配套提供的Flash Loader Demonstration软件或者其他第三方flasher应用程序,设置好通信参数后点击“Program”按钮执行刷机动作直至提示顺利完成为止。 值得注意的是,除了官方推荐的方式外还可以借助串口实现在线更新功能,不过这往往涉及到额外的设计考量比如电路布局调整以适应UART协议的要求等复杂情况因此这里不做赘述。 ```cpp // 示例:简单的LED闪烁代码片段适用于STM32F103C8Tx芯片 #include "stm32f1xx_hal.h" int main(void){ HAL_Init(); __HAL_RCC_GPIOA_CLK_ENABLE(); // 使能GPIOA时钟 GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA,&GPIO_InitStruct); while (true){ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); // 切换PA5引脚电平状态 HAL_Delay(500); // 延迟半秒时间 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值