本文介绍在Linux操作系统中使用Wireguard建立虚拟专用网络的方法,以Fedora发行版为例,步骤为:设置时区、安装Wireguard、生成密钥对、配置Wireguard服务器和客户端、测试Wireguard。
前言 Wireguard是一种新的VPN,旨在替代IPSec和OpenVPN,它的设计目标是简单和安全,并且利用了诸如噪声协议框架之类的最新技术,有些人认为Wireguard的配置简便性类似于OpenSSH,本文向你展示了如何部署和使用它。 它目前正在积极开发中,因此对于生产机器而言可能不是最好的,但是,正在考虑将Wireguard包含在Linux内核中,该设计已经过正式验证*,并被证明可抵御多种威胁。 部署Wireguard时,请确保Fedora Linux操作系统更新为最新版本,因为Wireguard的发行不稳。
设置时区 要检查并设置你的时区,请首先显示当前时间信息: timedatectl 然后,请设置正确的时区,例如欧洲/伦敦,请设置你所在地区的时区: timedatectl set-timezone Europe/London 请注意,系统的实时时钟(RTC)可能会继续设置为UTC或其他时区。
安装Wireguard 要安装,请为项目启用COPR存储库,然后使用sudo使用dnf进行安装: $ sudo dnf copr enable jdoss/wireguard $ sudo dnf install wireguard-dkms wireguard-tools 安装后,将有两个新命令以及对systemd的支持: 1、wg:Wireguard接口的配置。 2、wg-quick:建立VPN隧道。 创建Wireguard的配置目录,并应用umask077,umask 077允许文件所有者(根)的读取,写入和执行权限,但禁止其他所有人的读取、写入和执行权限: mkdir /etc/wireguard cd /etc/wireguard umask 077
生成密钥对 生成私钥,然后从中派生公钥: $ wg genkey > /etc/wireguard/privkey $ wg pubkey < /etc/wireguard/privkey > /etc/wireguard/publickey 另外,也可以一次性完成此操作: wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey 你还可以生成预共享密钥以提供一定程度的量子保护: wg genpsk > psk 对于服务器和客户端,这将是相同的值,因此你只需要运行一次命令。
配置Wireguard服务器和客户端 客户端和服务器都有[Interface]选项,用于指定分配给接口的IP地址以及私钥。 每个对等方(服务器和客户端)都有一个[Peer]部分,其中包含其各自的PublicKey以及PresharedKey,此外,此块可以列出允许使用隧道的IP地址。 1、Server 界面启动时会添加防火墙规则,并启用伪装,确保注意接口中的/24 IPv4地址范围,该范围与客户端不同,如下编辑/etc/wireguard/wg0.conf文件,将服务器的IP地址用作地址,并将客户机IP地址用作AllowedIPs: [Interface] Address = 192.168.2.1/24, fd00:7::1/48 PrivateKey = <SERVER_PRIVATE_KEY> PostUp = firewall-cmd --zone=public --add-port 51820/udp && firewall-cmd --zone=public --add-masquerade PostDown = firewall-cmd --zone=public --remove-port 51820/udp && firewall-cmd --zone=public --remove-masquerade ListenPort = 51820 [Peer] PublicKey = <CLIENT_PUBLIC_KEY> PresharedKey = LpI+UivLx1ZqbzjyRaWR2rWN20tbBsOroNdNnjKLMQ= AllowedIPs = 192.168.2.2/32, fd00:7::2/48 通过将以下内容添加到/etc/sysctl.conf中,允许转发IP数据包: net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 加载新设置: $ sysctl -p 重新启动后将保留转发。 2、Client 客户端与服务器配置非常相似,但是有一个可选的PersistentKeepalive附加条目设置为30秒,这是为了防止NAT引起问题,并且可能不需要设置,将AllowedIPs设置为0.0.0.0/0将通过隧道转发所有流量,如下编辑客户端的/etc/wireguard/wg0.conf文件,使用客户端的IP地址作为地址,并使用端点上的服务器IP地址: [Interface] Address = 192.168.2.2/32, fd00:7::2/48 PrivateKey = <CLIENT_PRIVATE_KEY> [Peer] PublicKey = <SERVER_PUBLIC_KEY> PresharedKey = LpI+UivLx1ZqbzjyRaWR2rWN20tbBsOroNdNnjWKLM= AllowedIPs = 0.0.0.0/0, ::/0 Endpoint = <SERVER_IP>:51820 PersistentKeepalive = 30
测试Wireguard 启动并检查服务器和客户端上的隧道状态: $ systemctl start wg-quick@wg0 $ systemctl status wg-quick@wg0 要测试连接,请尝试ping、ping6操作,如:
然后检查外部IP地址: dig +short myip.opendns.com @resolver1.opendns.com dig +short -6 myip.opendns.com aaaa @resolver1.ipv6-sandbox.opendns.com 注:在这种意义上,“Formally verified”表示已证明该设计具有数学上正确的消息和密钥保密性,正向保密性,相互认证,会话唯一性,通道绑定以及密钥泄露模拟和拒绝服务器攻击。
相关主题 搭建VPN工具Algo,Streisand,OpenVPN,StrongSwan,SoftEther,WireGuard |