VPN简介-2
VPN简介-2
以wireguard为例搭建一个VPN,通过VPN隧道来访问网站
环境
客户端: Window10
服务器: Debian9
服务器配置流程
安装wireguard服务
服务器使用的是腾讯云本身没有wireguard模块,需要自己安装.一是可以通过dkms去加载内核模块,二是使用wireguard源码编译一个可执行文件直接运行.第一种方法没有成功,所以这里使用第二种方法,使用wireguard-go的源码编译程序后上传到服务器(wireguard-go不需要cgo,交叉编译较为容易),此处省略编译上传过程
wireguard主程序是一个独立服务,启动时无法配置.需要通过命名管道去配置一些参数,所以还需要安装一个工具去了连接管道配置参数,这里通过添加apt源安装(服务器是树莓派需要下载wireguard-tools的源码编译)
1 | sudo sh -c "echo 'deb http://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main non-free contrib' > /etc/apt/sources.list.d/buster-backports.list" |
安装成功后可以通过wg命令去配置管道
配置wireguard服务
1 运行wireguard
wireguard为编译后上传的可执行文件
1 | ./wireguard wg0 |
2 配置虚拟网卡ip
1 | ip address add dev wg0 192.168.10.1/24 |
3 wireguard配置文件
生成服务端密钥
1 | wg genkey | tee privatekey | wg pubkey > publickey |
wireguard配置可以使用命令或文件,这里使用配置文件
wg.conf
1 | [Interface] |
注意Peer的公钥是由客户端产生的
开启虚拟网卡
1 | ip link set up dev wg0 |
设置wireguard配置,设置可以随时更改
1 | wg setconf wg0 wg.conf |
配置NAT规则
开启内核转发
1 | echo "1" > /proc/sys/net/ipv4/ip_forward |
开启SNAT转发(只是通过隧道组建局域网可以不开启转发)
1 | iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE |
客户端配置流程
下载wireguard-windows添加隧道配置,这里产生的公钥需要为上面服务端的peer公钥
配置文件如下
1 | [Interface] |
全部转发需要注意DNS
简单通过ping测试
1 | ping 192.168.10.1 |
ping有回应代表成功,如果没有回应则需要使用wireshark和tcpdump分别在客户端服务端抓包检验一下数据流是否正常,此处略过
总结
以上的配置使本机所有的流量都走隧道,实际可以根据情况进行配置.通过wireshark抓包也可以验证这一点.如果只是组建局域网,则只需要再服务端添加新的Peer数据,只需内核转发不需要设置SNAT的规则