WireGuardArch Linux

网络环境

服务器
网卡 对内 对外
eth0 10.0.20.9 glan.site
wg0 10.10.1.1

安装

  1. pacman -S wireguard-tools

开启内核转发

  1. vim vim /etc/sysctl.d/80-bbr.conf
  2. net.ipv4.ip_forward = 1
  3. net.ipv4.conf.all.proxy_arp = 1
  4. sysctl -p /etc/sysctl.d/*.conf

生成密钥

在服务器执行以下命令

  1. wg genkey | tee privatekey | wg pubkey > publickey

其中privatekey就是服务器私钥,而publickey就是服务器公钥

服务端配置文件

服务器编写配置文件 vim /etc/wireguard/wg0.conf

  1. [Interface]
  2. ListenPort = 51820
  3. Address = 10.10.1.1/32
  4. PrivateKey = [服务器私钥]
  5. PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  6. PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  7. # 代理所有所有流量
  8. PostUp = iptables -A FORWARD -i wg1 -j ACCEPT; iptables -A FORWARD -o wg1 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
  9. PostDown = iptables -D FORWARD -i wg1 -j ACCEPT; iptables -D FORWARD -o wg1 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
  10. # 代理指定ip段流量
  11. #PostUp = iptables -I FORWARD -s 10.10.1.1/24 -i wg0 -d 10.10.1.1/24 -j ACCEPT
  12. #PostUp = iptables -I FORWARD -s 10.10.1.1/24 -i wg0 -d 10.0.20.9/32 -j ACCEPT
  13. #PostUp = iptables -I FORWARD -s 10.0.20.9/32 -i wg0 -d 10.10.1.1/24 -j ACCEPT
  14. #PostDown = iptables -D FORWARD -s 10.10.1.1/24 -i wg0 -d 10.10.1.1/24 -j ACCEPT
  15. #PostDown = iptables -D FORWARD -s 10.10.1.1/24 -i wg0 -d 10.0.20.9/32 -j ACCEPT
  16. #PostDown = iptables -D FORWARD -s 10.0.20.9/32 -i wg0 -d 10.10.1.1/24 -j ACCEPT
  17. # SNAT
  18. PostUp = iptables -t nat -A POSTROUTING -s 10.10.1.0/24 -j SNAT --to-source 10.0.20.90
  19. PostDown = iptables -t nat -D POSTROUTING -s 10.10.1.0/24 -j SNAT --to-source 10.0.20.90
  20. # PostDown = iptables -t nat -F
  21. [Peer]
  22. PublicKey = [客户端公钥]
  23. AllowedIPs = 10.10.1.2/32

客户端配置(不做内网中转)

在客户端添加空隧道时,会自动生成客户端的公钥私钥,如下
image.png
将以下内容填写好,替换掉客户端原先的配置文件即可

  1. [Interface]
  2. PrivateKey = [客户端私钥]
  3. Address = 10.10.1.2/32
  4. DNS = 223.5.5.5
  5. MTU = 1420
  6. [Peer]
  7. PublicKey = [服务端私钥]
  8. AllowedIPs = 10.10.1.0/24,10.0.20.9/32
  9. Endpoint = glan.site:51820
  10. PersistentKeepalive = 25

服务端管理命令

  1. # 启动wireguard
  2. wg-quick up wg0
  3. # 终止wireguard
  4. wg-quick down wg0
  5. # 查看wireguard状态
  6. wg

检查

traceroute

参考资料

https://www.bilibili.com/video/av852363238/
http://aq.mk/index.php/archives/132.html
https://devld.me/2020/07/27/wireguard-setup/

待尝试

home assistant➕ wireguard插件