节点的公网 IP 地址:端口,例如
123.124.125.126:1234
,或者直接使用域名some.domain.tld:1234
。如果peer节点不在同一子网中,那么节点的公开端点必须使用公网 IP 地址。
- 私钥(Private key)
单个节点的 WireGuard 私钥,生成方法是:
wg genkey > example.key
。
- 公钥(Public key)
单个节点的 WireGuard 公钥,生成方式为:
wg pubkey < example.key > example.key.pub
。
- DNS
域名服务器,用于将域名解析为 VPN 客户端的 IP,不让 DNS请求泄漏到 VPN 之外。
主要功能和原理如下
WireGuard 通过添加一个(或多个)网络接口来工作,例如
eth0
或wlan0
,称为wg0
(或wg1
、wg2
、wg3
等)。然后可以使用ifconfig(8)
或ip-address(8)
正常配置该网络接口,并使用route(8)
或ip-route(8)
添加和删除其路由,以及所有普通网络实用程序都是如此。接口的特定 WireGuard 方面使用wg(8)
工具进行配置。该接口充当隧道接口。WireGuard 将隧道 IP 地址与公钥和远程端点相关联。当接口向peer发送数据包时,它会执行以下操作:
- 该数据包适用于 192.168.30.8。那是哪位peer啊?让我看看…好吧,这是给peer
ABCDEFGH
的。 (或者,如果它不适合任何已配置的peer,则丢弃该数据包。)- 使用peer
ABCDEFGH
的公钥加密整个 IP 数据包。- Peer
ABCDEFGH
的远程端点是什么?让我看看…好的,端点是主机 216.58.211.110 上的 UDP 端口 53133。- 使用 UDP 通过 Internet 将步骤 2 中的加密字节发送到 216.58.211.110:53133。
当接口收到数据包时,会发生以下情况:
- 我刚刚从主机 98.139.183.24 上的 UDP 端口 7361 收到一个数据包。让我们来解密吧!
- 它为peer
LMNOPQRS
正确解密和验证。好的,让我们记住,peerLMNOPQRS
的最新 Internet 端点是使用 UDP 的 98.139.183.24:7361。- 解密后,明文数据包来自 192.168.43.89。是否允许peer
LMNOPQRS
以 192.168.43.89 向我们发送数据包?- 如果是,则在接口上接受数据包。如果没有,就放弃它。
WireGuard 的核心是一个称为加密密钥路由的概念,它的工作原理是将公钥与隧道内允许的隧道 IP 地址列表相关联。每个网络接口都有一个私钥和一个peer点列表。每个peer都有一个公钥。公钥短小且简单,由peer用来相互验证。它们可以通过任何带外方法传递以在配置文件中使用,类似于将 SSH 公钥发送给朋友以访问 shell 服务器的方式。
1.4 WireGuard安装
wireGuard官方安装教程
2 WireGuard组网实现内网穿透
2.1 前提条件
- 公网服务器: 必须拥有一台具有公网IP地址的服务器,这是内网穿透的关键。该服务器充当中转站,负责将外部请求传递到内部网络。
- 网络设备配置权限: 需要对内部网络的路由器或防火墙有一定的配置权限,以便进行端口映射或其他必要的网络设置。这确保了从公网服务器到内网的连接是有效的。
- 安装WireGuard: 在公网服务器和内网设备上都需要安装和配置WireGuard软件。确保两端的WireGuard配置一致,包括公私钥的生成和网络接口的配置。
- 开启相应端口: 在公网服务器的防火墙配置中,需要打开WireGuard所使用的端口(默认是51820/UDP),以确保能够接收来自内网设备的连接请求。
- 合适的网络拓扑: 确保了解内部网络的拓扑结构,以便正确设置WireGuard配置,包括允许流量通过的子网、路由等。
2.2 网络拓扑结构
2.3 具体步骤
2.3.1 中继服务器配置
- 创建密钥对
wg genkey | tee server_privatekey | wg pubkey > server_publickey
执行以上两条命令后,会在执行命令的当前文件夹自动生成2个文件:
- 开启IP地址转发
sudo sysctl net.ipv4.ip_forward
如果显示1则说明已开启,否则则未开启。
echo “net.ipv4.ip_forward = 1” >> /etc/sysctl.conf
echo “net.ipv4.conf.all.proxy_arp = 1” >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
- 设置IP地址伪装
允许防火墙伪装IP
firewall-cmd --add-masquerade
检查是否允许伪装IP
firewall-cmd --query-masquerade
禁止防火墙伪装IP
firewall-cmd --remove-masquerade
- 配置wireguard虚拟网卡(不推荐,只是让读者直观了解过程)
sudo ip link add wg0 type wireguard # 添加一块叫 wg0 的虚拟 wireguard 网卡
sudo ip addr add 192.168.71.1/24 dev wg0 # 给 wg0 网卡添加 ip 地址 192.168.71.1,子网掩码 255.255.255.0
sudo wg set wg0 private-key ./server-privatekey # wireguard 设置密钥
sudo ip link set wg0 up # 启用刚刚添加的网卡
我们可以通过
ip addr
命令查看到wg0网卡的状态
可以看到网卡
wg0
接口是已启用的,具有 IPv4 地址192.168.71.1
输入
wg
命令则可以看到配置信息,配置文件通常在/etc/wireguard/
目录中
有想继续尝试这种方式的可以看一下官方教程
- 编写配置文件配置网卡(推荐,应该
wg set
命令需要提供很多参数,很容易出错)
我们在
/etc/wireguard
目录中创建wg0.conf
并编写配置,配置项请看2.4 配置项说明
[Interface]
本机密钥
PrivateKey = KIDTljv66CgVYBNlrSD13Au6qfUdIcFJkTBkuErhTEk=
本机地址
Address = 192.168.71.1/24
监听端口
ListenPort = 51820
[Peer]
对端的publickey
PublicKey = iWy57DmR6wVXcVzMDOa2WyywO0WT5JRAGYIlh0v/nW8=
对端地址
AllowedIPs = 192.168.71.2/24
- 重新启动网卡
sudo wg-quick down wg0
sudo wg-quick up wg0
2.3.2 其他peer
我这里只列举MacOS的操作方式(其他都同理,就是要配置私钥和公钥)
操作完之后,它会给出密钥对,我们只需要添加好其他信息即可。
配置文件如下:
[Interface]
本机密钥
PrivateKey = kDUqWzkbaB1EU5C2ADoId1TXtZF89xxn0VV45EcjFHs=
本机地址
Address = 192.168.71.2/24
[Peer]
对端公钥,即公网服务器公钥
PublicKey = bEm1p736FQySfKlTTUCeHmiwTmna5umZWOWLGWqioSk=
允许此对等方的传入流量并指定传出流量的目标。
AllowedIPs = 192.168.71.0/24
公网IP+监听端口号
Endpoint = 1.1.1.1:51820
PersistentKeepalive = 25
2.3.3 测试
MacOS端:
服务器Ping 主机:
2.4 WireGuard配置文件说明
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
一、网安学习成长路线图
网安所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、网安视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
三、精品网安学习书籍
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、网络安全源码合集+工具包
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、网络安全面试题
最后就是大家最关心的网络安全面试题板块
一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算文章来源地址https://www.toymoban.com/news/detail-845206.html
的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!**](https://bbs.csdn.net/forums/4304bb5a486d4c3ab8389e65ecb71ac0)文章来源:https://www.toymoban.com/news/detail-845206.html
AI人工智能、Android移动开发、AIGC大模型、C C#、Go语言、Java、Linux运维、云计算、MySQL、PMP、网络安全、Python爬虫、UE5、UI设计、Unity3D、Web前端开发、产品经理、车载开发、大数据、鸿蒙、计算机网络、嵌入式物联网、软件测试、数据结构与算法、音视频开发、Flutter、IOS开发、PHP开发、.NET、安卓逆向、云计算
到了这里,关于WireGuard 组网教程:快速构建安全高效的私密网络并实现内网穿透_wire guard(2)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!