WG配置随笔
最近配置了一个WG用于连接内网,特记录下相关的坑:
1. 首先是要确保udp端口可以成功互相访问,linux下面
nc -vvul 51820 (server)
nc -vvu xxx.xxx.xxx.xxx 51820 (client)
windows下面
ncat -vvul 51820 (server)
ncat -vvu xxx.xxx.xxx.xxx 51820 (client)
确保可以互相访问并发送接受信息
2. 设置两侧的wg配置,注意用
wg genkey > private
wg pubkey < private
可以快速产生一对密钥,然后interface设置本端的虚拟ip地址,注意子网不能用/32
peer设置对端的ip,用/32限制严格为对方的虚拟ip才可以访问
另一端直接reverse过来,注意最好用两对密钥
3. windows端安装tunsafe,并且安装合适TAP驱动,注意和openvpn的tap可能冲突。另外注意官方的windows程序利用TUN有些bug不好用。连接上去测试
ping linux端通过,(反向ping windows需要打开Windows防火墙! 所以建议还是用nc开一个tcp的端口互相发送测试)
4. 设置转发,
sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward=1
以及的防火墙设置,参考https://davidshomelab.com/access-your-home-network-from-anywhere-with-wireguard-vpn/ ; 如果没问题可以不用调
然后在服务器端的config里面设置自动建立iptables转发规则,参考https://davidshomelab.com/access-your-home-network-from-anywhere-with-wireguard-vpn/ 里面的postup和down
然后在客户端的peer里面添加内网的ip端,意思是访问此段直接从wg走
另外注意服务器端最好设置成xxx.xxx.xxx.1 默认网关的虚拟地址
5. 测试应该没问题。利用ping先测试服务器端,再测试内网的机器。
6. 如果需要debug 服务器端,利用
echo 'module wireguard +p' | sudo tee /sys/kernel/debug/dynamic_debug/control
echo 'module wireguard -p' | sudo tee /sys/kernel/debug/dynamic_debug/control
开启或关闭内核log,
之后用journalctl -fek 查看日志debug
8. 开始关闭linux端的wg用 wg-quick up/down wgxxx
status 用wg show来看
(update1: 更新两个很有用的命令,用来开启pve虚拟机里面的vm的serial串口,从而xterm
)
EOF