智能加速器
我的工作需要我每年多次前往美国,在那里使用酒店的 Wi-Fi,甚至是我公司的 VPN 时,我总是感到不自在。 我想确保我在网上所做的事是我自己的事,只与我有关。
我听说过缆线护栏多次提到,与 OpenVPN 相比,它的性能和操作是多么的简单(我想和提出 OpenVPN 配置文件的人谈谈......)。 我决定试一试。 我的想法是在我位于巴黎的 VPS 上设置一个 VPN 接入点,当我出差时可以连接到这个接入点。
智能加速器
我按照 Wireguard's正式安装说明. 不过,我还需要为运行的内核安装头文件,以便dkms
可以编译防爆
内核模块。
% apt-get 安装 linux-headers-$(uname -r) % add-apt-repository ppa:wireguard/wireguard% apt-get 更新% apt-get 安装 护线器
如果一切按计划进行,您应该看到护线器
编译的内核模块dkms
安装时
... DKMS: build completed.wireguard.ko: 运行模块版本正确性检查。 - 原始模块 - 该内核中不存在原始模块 - 安装 - 安装到 /lib/modules/X.Y.Z-ABC-generic/updates/dkms/ ...
此时,您应该可以在lsmod
输出并加载。
% lsmod | grep 护线器钢丝防护罩 204800 0 ip6_udp_tunnel 16384 1 wireguard udp_tunnel 16384 1 wireguard % 模拟 护线器
智能加速器
首先,我们创建服务器护线器
对等者的公钥和私钥。
% CD /etc/wireguard% umask 077 # 禁止公众访问 % wg Genkey | 发球 私钥 | wg pubkey > 公钥
假设 VPS 公共网络接口为役2
. 我们将使用192.168.2.0/24
子网的所有护线器
-相关的地址,并分配192.168.2.1
服务器同行的 IP。
% 猫 <<EOF > /etc/wireguard/wg0.conf[界面] # 这 知识产权 指派 自 的 wg0 接口地址 = 192.168.2.1/24 # 这 港口 护线器 将 倾听 关于ListenPort = <公共端口>; # 这 私营 钥匙 使用过的 由 的 本地 同行PrivateKey = \$(cat /etc/wireguard/privatekey) # 接受 交通 自 的 wg0 接口 和 许 网络连接 交通 从 役2 自 wg0PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens2 -j MASQUERADE PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens2 -j MASQUERADE EOF % rm /etc/wireguard/privatekey
我们还需要在<公共端口>;
港口
% iptables -i 役2 -p udp --端口 <public port>; none 接受
一旦完成,我们现在就可以使用wg-quick
以设置wg0
网络接口,以及广场
iptables 规则,这些规则将 NAT 公共网络之间的流量。役2
将wg0
. 实际上,我们可以使用 systemd 来实现这一点,因为我们确信wg0
如果重启,接口会重新创建。
% systemctl 启动 wg-quick@wg0[#] ip link add wg0 type wireguard [#] wg setconf wg0 /dev/fd/63 [#] ip -4 address add 192.168.2.1/24 dev wg0 [#] ip link set mtu 1420 up dev wg0 [#] iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens2 -j MASQUERADE % systemctl 以便 wg-quick@wg0创建了从 /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service 到 /lib/systemd/system/wg-quick@.service 的符号链接。
智能加速器
我使用的是 Wireguard安卓应用并分配192.168.2.2/32
地址到我的手机,并添加服务器对等详细信息(因为 Wireguard 是点对点 VPN,没有客户端/服务器架构)。
服务器对等公开密钥被设置为远程/etc/wireguard/publickey
文件。 因为我想通过护线器
我设置了允许的 IP
字段改为0.0.0.0/0
的对等端点<服务器公共 ens2 IP>:<公共端口>;
.
智能加速器
在为手机对等设备生成公钥之后,我们还需要在服务器对等设备上对其进行授权,并重新启动护线器
.
% 猫 <<EOF >> /etc/wireguard/wg0.confnone # 电话 同行公钥 = <应用程序中生成的手机对等设备公钥>; 允许 IP = 192.168.2.2/32 EOF % systemctl 重新启动 wg-quick@wg0
智能加速器
我的手机与服务器断开了连接护线器
同行,我现在可以检查wg0
服务器网络接口:
% ifconfig wg0wg0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.2.1 P-t-P:192.168.2.1 Mask:255.255.255.255.0 none RX 数据包:0 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:0 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1 RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
然后,我将手机连接到服务器对等网络,打开一个随机网页,然后即成我们可以看到通过服务器的流量wg0
接口。
$ ifconfig wg0wg0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:192.168.2.1 P-t-P:192.168.2.1 Mask:255.255.255.255.0 none RX 数据包:4084 错误:0 丢弃:132 超限:0 帧:0 TX 数据包:4895 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1 RX 字节:452436 (452.4 KB) TX 字节:2954188 (2.9 MB)
快速tcpdump
显示流向wg0
确实是加密的。
$ tcpdump -i wg0 -vv -c 100 -Xtcpdump:监听 wg0,链接类型 RAW(原始 IP),捕获大小 262144 字节 15:14:05.096356 IP(tos 0x0,ttl 105,id 47301,偏移 0,标志 [无],proto TCP (6),长度 332) wq-in-f188.1e100.net.5228 > 192.168.2.2.46641: Flags [P.], cksum 0x8308 (correct), seq 1867855144:1867855424, ack 229885280, win 253, options [nop,nop,TS val 426814177 ecr 2017832], length 280 0x0000: 4500 014c b8c5 0000 6906 fe02 4a7d 8cbc E..L....i...J}... 0x0010: c0a8 0202 146c b631 6f55 3528 0db3 c560 .....l.1oU5(...`) 0x0020: 8018 00fd 8308 0000 0101 080a 1970 aae1 .............p... 0x0030: 001e ca28 1703 0301 13e7 c1f4 5089 ed04 ...(........P... 0x0040: aba6 ef67 2cbe a7b3 f0cc 02d0 caaa d675 ...g,..........u ...
现在,我有了一个个人 VPN,每次出国旅行都可以使用。
感谢托马斯在晚上 11 点回答网络问题时对我的耐心指导,并感谢他对本文的校对。 其余错误均为本人所为。
智能加速器