wireguard安装与配置
https://www.cnblogs.com/syy1757528181/p/14333389.html
https://www.jianshu.com/p/09e711ad7874
https://www.wireguard.com/quickstart/
https://www.wireguard.com/install/
1、wg安装
sudo apt-get install wireguard
2、服务端生成密钥对
# 开启ipv4流量转发 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p # 创建并进入WireGuard文件夹 mkdir -p /etc/wireguard && chmod 0777 /etc/wireguard cd /etc/wireguard umask 077 # 生成服务器和客户端密钥对 wg genkey | tee server_privatekey | wg pubkey > server_publickey wg genkey | tee client_privatekey | wg pubkey > client_publickey
3、配置文件生成
##########################生成服务端的配置文件 /etc/wireguard/wg0.conf########################## echo " [Interface] PrivateKey = $(cat server_privatekey) # 填写本机的privatekey 内容 Address = 10.0.8.1/24 PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 50814 # 注意该端口是UDP端口 DNS = 8.8.8.8 MTU = 1420 [Peer] PublicKey = $(cat client_publickey) # 填写对端的publickey 内容 AllowedIPs = 10.0.8.10/24 " > wg0.conf # 设置开机自启 systemctl enable wg-quick@wg0 # 重要!如果名字不是eth0, 以下PostUp和PostDown处里面的eth0替换成自己服务器显示的名字 # ListenPort为端口号,可以自己设置想使用的数字 # 以下内容一次性粘贴执行,不要分行执行 ##########################生成客户端的配置文件 /etc/wireguard/client.conf########################## echo " [Interface] PrivateKey = $(cat client_privatekey) # 填写本机的privatekey 内容 Address = 10.0.8.10/24 DNS = 8.8.8.8 MTU = 1420 [Peer] PublicKey = $(cat server_publickey) # 填写对端的publickey 内容 Endpoint = server公网的IP:50814 AllowedIPs = 0.0.0.0/0, ::0/0 PersistentKeepalive = 25 " > client.conf # 注:文件在服务端配好了可以下载下来传到客户端
4、启动WireGuard
########################服务端################### # 启动WireGuard wg-quick up wg0 # 停止WireGuard wg-quick down wg0 # 查看WireGuard运行状态 [root@localhost~]# wg interface: wg0 public key: b8fztAWxqS/SKQ619YTM09siKESbzoUiBeautnFsaGU= private key: (hidden) listening port: 50814 peer: HF7vS/rpk2tEQ1WxWnh78Rp8lSuwEMLISqQsX6MFlwk= endpoint: 221.225.202.158:11562 allowed ips: 10.0.8.0/24 latest handshake: 34 seconds ago transfer: 16.26 KiB received, 12.87 KiB sent
########################客户端################### # 启动WireGuard wg-quick up client # 停止WireGuard wg-quick down client # 查看WireGuard运行状态 [root@localhost~]# wg [root@v2 ~]# wg interface: client public key: HF7vS/rpk2tEQ1WxWnh78Rp8lSuwEMLISqQsX6MFlwk= private key: (hidden) listening port: 59633 fwmark: 0xca6c peer: b8fztAWxqS/SKQ619YTM09siKESbzoUiBeautnFsaGU= endpoint: server公网的IP:50814 allowed ips: 0.0.0.0/0, ::/0 latest handshake: 17 seconds ago transfer: 9.96 KiB received, 19.09 KiB sent persistent keepalive: every 25 seconds
5、2台机器测试10网段的互ping
ping 10.0.8.1
6、客户端路由配置
[root@v2 ~]# ip route add 103.52.188.136 via 192.168.1.2 [root@v2 ~]# ip route add 0.0.0.0/0 via 10.0.8.1 # 所有的流量都走这个ip
7、server端
apt -y install tcpdump
# 监视指定网络接口的数据包
tcpdump -i wg0 # 我们的转发都是经过这个私网来进行的可以客户ping的同时,服务端进行抓包查看
8、windows连接
9、安装qrencode二维码分享
apt-get install qrencode
生成二维码
qrencode -t ansiutf8 < client.conf
其他:
命令行界面
可以通过添加一个新接口ip-link(8)
,它应该自动处理模块加载:
# ip link add dev wg0 type wireguard
(非 Linux 用户将改为编写wireguard-go wg0
.)
一个 IP 地址和对等体可以被分配ifconfig(8)
或ip-address(8)
# ip address add dev wg0 192.168.2.1/24
或者,如果总共只有两个对等点,则可能更需要这样的操作:
# ip address add dev wg0 192.168.2.1 peer 192.168.2.2
该接口可以使用包含的wg(8)
实用程序配置密钥和对等端点:
# wg setconf wg0 myconfig.conf
或者
# wg set wg0 listen-port 51820 private-key /path/to/private-key peer ABCDEF... allowed-ips 192.168.88.0/24 endpoint 209.202.254.14:8172
最后,可以使用ifconfig(8)
或激活接口ip-link(8)
:
# ip link set up dev wg0
还有wg show
和wg showconf
命令,用于查看当前配置。调用wg
不带参数默认为呼吁wg show
所有WireGuard接口。
密钥生成
WireGuard 需要 base64 编码的公钥和私钥。这些可以使用该wg(8)
实用程序生成:
$ umask 077 $ wg genkey > privatekey
这将privatekey
在包含新私钥的 stdout 上创建。
然后,您可以从您的私钥派生您的公钥:
$ wg pubkey < privatekey > publickey
这privatekey
将从标准输入读取并将相应的公钥写入publickey
标准输出。
当然,您可以一次完成所有这些:
$ wg genkey | tee privatekey | wg pubkey > publickey