文章介绍:上一篇文章中介绍了云上的vyos对接本地内网的vyos实现海外加速访问,但是大多数读者都不会vyos软路由的配置,所以本次我们把云上的vyos改成ubuntu系统,还是使用wireguard协议,与其上一篇【Vyos-开源篇-6】Vyos+GoBGP+SmartDNS 实现智能分流对比,其他方式都不变。

一、Vultr安装Ubuntu

yydy_2024-05-07_22-30-17

yydy_2024-05-07_22-32-17

二、Ubuntu-更新-安全加固-性能优化

2.1、更新系统

sudo apt update;sudo apt upgrade -y

2.2、安装iptables-persistent

sudo apt install -y iptables-persistent

2.3、安装工具包

apt install -y net-tools

2.4、安装swap和fail2ban

wget -O box.sh https://raw.githubusercontent.com/BlueSkyXN/SKY-BOX/main/box.sh && chmod +x box.sh && clear && ./box.sh

2.4.1、swap

yydy_2024-05-07_22-47-20

yydy_2024-05-07_22-47-33

yydy_2024-05-07_22-47-50

yydy_2024-05-07_22-47-20

yydy_2024-05-07_22-48-21

2.4.2、fail2ban

以防失联,修改完端口后,第一次打开的窗口别关闭,然后用新窗口登录服务器验证是否可以用新端口登录

./box.sh
wget https://raw.githubusercontent.com/FunctionClub/Fail2ban/master/uninstall.sh && bash uninstall.sh

yydy_2024-05-07_22-51-14

yydy_2024-05-07_22-54-11

三、Ubuntu部署WireGuard

3.1、安装

sudo apt install -y wireguard

3.2、进入wireguard目录

cd /etc/wireguard/

3.3、设置权限

在 Linux 中,默认的文件权限是 666,目录权限是 777。但是,应用程序通常不希望新文件和目录具有这么开放的权限,因此可以使用 umask 命令来限制它们的权限。

可以使用、umask 命令用来屏蔽文件或目录的权限,其工作原理是将所设置的权限从系统默认权限中去除。例如,如果设置 umask 077,那么新创建的文件权限将会是 666 - 077 = 600,新创建的目录权限将会是 777 - 077 = 700

换句话说,umask 077 表示新创建的文件权限将是 600(所有者可读写,其他用户没有权限),新创建的目录权限将是 700(所有者具有读、写和执行权限,其他用户没有权限)。

umask 077

3.4、生成公私钥

wg genkey | tee privatekey | wg pubkey > publickey

3.5、查看公钥

cat publickey
root@ubuntu:/etc/wireguard# cat publickey
d79CoZCexe6dVn2FAQB9A2bDPyMfBohiviVyBMet9Ck=

3.6、查看私钥

cat privatekey
root@ubuntu:/etc/wireguard# cat privatekey
cCohLNtyQ47Q7UIzxVzPG6Ko4GtAVaZgJBs6fVj1sGk=

3.7、创建wg0

nano wg0.conf

填入以下信息,其中vyos的公钥还没有,先不写,enp1s0是ubuntu上网口名称,可以通过:ip addr 查看。

[Interface]
PrivateKey = <Ubuntu的私钥>
Address = 100.255.1.1/30
ListenPort = ubuntu的wireguard公网端口 #自定义(UDP端口,默认是51820)
PostUp = sysctl -w net.ipv4.ip_forward=1 
PostUp = iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE
PostUp = iptables -A FORWARD -o wg0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360
PostDown = iptables -D FORWARD -o wg0 -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 1360
MTU = 1420

[Peer]
PublicKey = <VyOS的公钥>
AllowedIPs = 100.255.1.2/32
Endpoint = ubuntu公网IP:ubuntu的wireguard公网端口

3.8、wg0开机自启

sudo systemctl enable  wg-quick@wg0

四、VyOS配置WireGuard

4.1、生成公私钥

在VyOS上生成WireGuard密钥对

vyos@vyos:~$ generate pki wireguard key-pair
Private key: kG585DSBE2h1e5+fjJmoJjzVJkdLNvJz6zqBGTbWwVU=     #私钥
Public key: zQBjCJm3zyTnUz8ScT5MUbOV27CvlAKkQn0Xrp2DxQ8=    #公钥

4.2、配置wg0接口

set interfaces wireguard wg0 address '100.255.1.2/30'
set interfaces wireguard wg0 peer ubuntu address '64.176.42.129'
set interfaces wireguard wg0 peer ubuntu allowed-ips '0.0.0.0/0'
set interfaces wireguard wg0 peer ubuntu port '61740'
set interfaces wireguard wg0 peer ubuntu public-key 'd79CoZCexe6dVn2FAQB9A2bDPyMfBohiviVyBMet9Ck='
set interfaces wireguard wg0 port '61740'
set interfaces wireguard wg0 private-key 'kG585DSBE2h1e5+fjJmoJjzVJkdLNvJz6zqBGTbWwVU='

4.3、开启Ubuntu的wg0

sudo systemctl start wg-quick@wg0

五、VyOS完整配置

set interfaces ethernet eth0 address '10.225.97.9/24'

set interfaces wireguard wg0 address '100.255.1.2/30'
set interfaces wireguard wg0 peer ubuntu address '64.176.42.129'
set interfaces wireguard wg0 peer ubuntu allowed-ips '0.0.0.0/0'
set interfaces wireguard wg0 peer ubuntu port '61740'
set interfaces wireguard wg0 peer ubuntu public-key 'd79CoZCexe6dVn2FAQB9A2bDPyMfBohiviVyBMet9Ck='
set interfaces wireguard wg0 port '61740'
set interfaces wireguard wg0 private-key 'kG585DSBE2h1e5+fjJmoJjzVJkdLNvJz6zqBGTbWwVU='

set nat source rule 100 outbound-interface name 'wg0'
set nat source rule 100 translation address 'masquerade'

set protocols static route 0.0.0.0/0 next-hop 100.255.1.1

set protocols static route 64.176.42.129/32 next-hop 10.225.97.1

set system name-server '8.8.8.8'

yydy_2024-05-08_00-27-42

六、GoBGP

Ubuntu中运行GoBGP+GeoIP跟VyOS中一样,请看下面的教程。

Vyos-开源篇-6】Vyos+GoBGP+SmartDNS 实现智能分流

其他

如果发现VyOS不能上网,请关闭防火墙。

sudo ufw disable