文章说明:介绍在vyos软路由上配置vpn服务,提供用户私有vpn连接,目前vyos内置了如下几种vpn服务。

一、vpn介绍

  1. IPSec(Internet Protocol Security):

    • 描述: IPsec 是一种广泛用于实现虚拟专用网络(VPN)的协议套件。它通过对 IP 数据包进行加密和身份验证来提供网络通信的安全性。
    • 特点: 提供对网络层的安全性,支持加密和身份验证,常用于 site-to-site VPN 或远程访问 VPN。
  2. L2TP(Layer 2 Tunneling Protocol):

    • 描述: L2TP 是一种隧道协议,通常与 IPsec 结合使用,创建安全的 VPN 连接。它允许在公共网络上创建私有连接。
    • 特点: 主要用于远程用户接入 VPN 网络,提供加密和身份验证。
  3. OpenConnect

    • 描述: OpenConnect 是一个支持 SSL VPN 的客户端,常用于通过 HTTPS 连接到 VPN 服务器。它提供对各种 VPN 协议的支持,包括 Cisco AnyConnect 和 Juniper Pulse Connect Secure。
    • 特点: 能够穿越网络防火墙,并通过 HTTPS 实现安全连接。
  4. PPTP(Point-to-Point Tunneling Protocol):

    • 描述: PPTP 是一种过时的 VPN 协议,通过创建点对点的虚拟专用网络连接来实现安全通信。然而,由于其安全性较差,现在不再推荐使用。
    • 特点: 不太安全,已经被更安全的协议取代,不建议使用。
  5. RSA Keys

    • 描述: RSA 是一种非对称加密算法,常用于创建公钥和私钥,用于安全通信和身份验证。
    • 特点: 提供了一种强大的加密和身份验证机制,常用于 VPN 连接中的密钥交换和数字签名。
  6. SSTP(Secure Socket Tunneling Protocol):

    • 描述: SSTP 是一种利用 SSL 加密的 VPN 协议,通常用于通过 HTTPS 端口(443)的安全通信。
    • 特点: 提供强大的加密,适用于穿越网络防火墙,常用于 Windows 环境中。

二、vyos安装

【Vyos-开源篇-1】- VMware安装vyos虚拟机

三、vyos基本配置

【Vyos-开源篇-2】- vyos软路由基本配置

四、vyos配置IPSec

IPSec使用的协议端口有这几个,IKEv1 的主模式(Main Mode)和快速模式(Quick Mode)使用 500/UDP,IKEv2 也使用 ​500/UDP,但它支持 NAT 遍历,因此也可以使用 ​4500/UDP,尤其是在通过 Network Address Translation Traversal(NAT-T)设备进行通信时需要使用。

4.1、基础配置

configure #配置模式
set interfaces ethernet eth0 address '192.168.2.2' #eth0口配置静态IP
set interfaces ethernet eth0 description 'WAN' #eth0口备注
set interfaces dummy dum0 address '100.255.255.1/32' #本地ipsec感兴趣流IP
set interfaces dummy dum0 description 'local-ip' #dum0口备注
set nat source rule 100 outbound-interface 'eth0' #出接口是eth0
set nat source rule 100 translation address masquerade #snat成出接口IP上网
set nat source rule 3 exclude #不做NAT
set nat source rule 3 outbound-interface 'eth0' #出接口eth0
set nat source rule 3 source address 100.255.255.1/32 #源地址是本地ipsec感兴趣流IP
set protocols static route 10.200.200.59/32 next-hop 192.168.2.1 #去对端感兴趣流IP下一跳丢给网关
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1 #默认路由上网
commit #应用配置
save #保存配置

4.2、IPSec配置

4.2.1、ESP-IKE

以下是对IPSec的ESP和IKE配置说明

  1. ESP Group 配置:

    • compression 'disable': 禁用 ESP 组的压缩。
    • lifetime '3600': 设置 ESP 组的生命周期为 3600 秒。
    • mode 'tunnel': 将 ESP 组设置为隧道模式。
    • pfs 'dh-group2': 使用 Diffie-Hellman 群组2进行 Perfect Forward Secrecy。
  2. IKE Group 配置:

    • close-action 'none': 在 IKE 关闭时不执行任何操作。
    • dead-peer-detection action 'restart': 发现对端不可用时,执行重新启动。
    • dead-peer-detection interval '30': 设置死对端检测的间隔为 30 秒。
    • dead-peer-detection timeout '120': 设置死对端检测的超时为 120 秒。
    • ikev2-reauth 'no': 禁用 IKEv2 重新验证。
    • key-exchange 'ikev1': 使用 IKEv1 协商密钥交换。
    • lifetime '28800': 设置 IKE 组的生命周期为 28800 秒。
    • proposal 1 dh-group '2': 使用 Diffie-Hellman 群组2进行密钥交换。
    • proposal 1 encryption '3des': 使用 3DES 进行加密。
    • proposal 1 hash 'sha1': 使用 SHA-1 进行哈希。
set vpn ipsec esp-group ESP-01 compression 'disable'
set vpn ipsec esp-group ESP-01 lifetime '3600'
set vpn ipsec esp-group ESP-01 mode 'tunnel'
set vpn ipsec esp-group ESP-01 pfs 'dh-group2'
set vpn ipsec esp-group ESP-01 proposal 1 encryption '3des'
set vpn ipsec esp-group ESP-01 proposal 1 hash 'sha1'
set vpn ipsec ike-group IKE-01 close-action 'none'
set vpn ipsec ike-group IKE-01 dead-peer-detection action 'restart'
set vpn ipsec ike-group IKE-01 dead-peer-detection interval '30'
set vpn ipsec ike-group IKE-01 dead-peer-detection timeout '120'
set vpn ipsec ike-group IKE-01 ikev2-reauth 'no'
set vpn ipsec ike-group IKE-01 key-exchange 'ikev1'
set vpn ipsec ike-group IKE-01 lifetime '28800'
set vpn ipsec ike-group IKE-01 proposal 1 dh-group '2'
set vpn ipsec ike-group IKE-01 proposal 1 encryption '3des'
set vpn ipsec ike-group IKE-01 proposal 1 hash 'sha1'
commit #应用配置
save #保存配置

4.2.2、IPSec接口

以下配置是选定用于建立IPSec的接口

set vpn ipsec ipsec-interfaces interface 'eth0'

4.2.3、Remote配置

以下配置是设定对端的,当对端具有公网IP时,可以建立IPSecVPN,如果没有固定的公网ip,也可以使用DDNS绑定一个域名,直接把88.88.88.88换成域名也可以,参考下面说明

  1. authentication mode 'pre-shared-secret': 使用预共享密钥进行身份验证。
  2. authentication pre-shared-secret 'ipsecvpn@987': 设置预共享密钥为 'ipsecvpn@987'。
  3. authentication remote-id '88.88.88.88': 设置远程身份标识为 '88.88.88.88',即对端公网IP或者域名。
  4. connection-type 'initiate': 设定连接类型为主动模式,即本端主动发起连接。
  5. default-esp-group 'ESP-01': 设置默认的 ESP 组为 'ESP-01'。
  6. force-encapsulation 'enable': 启用esp强制封装udp,无需再设定NAT穿越
  7. ike-group 'IKE-01': 设置 IKE 组为 'IKE-01'。
  8. ikev2-reauth 'inherit': 继承 IKEv2 重新验证的设置。
  9. local-address '192.168.2.2': 本地 IP 地址为 '192.168.2.2',即eth0。
  10. tunnel 1 local prefix '100.255.255.1/32': 设置隧道1的本地前缀,即dum0
  11. tunnel 1 remote prefix '100.255.254.1/32': 设置隧道1的远程前缀。
set vpn ipsec site-to-site peer 88.88.88.88 authentication mode 'pre-shared-secret'
set vpn ipsec site-to-site peer 88.88.88.88 authentication pre-shared-secret 'ipsecvpn@987'
set vpn ipsec site-to-site peer 88.88.88.88 authentication remote-id '88.88.88.88'
set vpn ipsec site-to-site peer 88.88.88.88 connection-type 'initiate'
set vpn ipsec site-to-site peer 88.88.88.88 default-esp-group 'ESP-01'
set vpn ipsec site-to-site peer 88.88.88.88 force-encapsulation 'enable'
set vpn ipsec site-to-site peer 88.88.88.88 ike-group 'IKE-01'
set vpn ipsec site-to-site peer 88.88.88.88 ikev2-reauth 'inherit'
set vpn ipsec site-to-site peer 88.88.88.88 local-address '192.168.2.2'
set vpn ipsec site-to-site peer 88.88.88.88 tunnel 1 local prefix '100.255.255.1/32'
set vpn ipsec site-to-site peer 88.88.88.88 tunnel 1 remote prefix '100.255.254.1/32'
commit #应用配置
save #保存配置

五、vyos配置L2TP

5.1、基础配置

configure #配置模式
set interfaces ethernet eth0 address '192.168.2.2' #eth0口配置静态IP
set interfaces ethernet eth0 description 'WAN' #eth0口备注
set nat source rule 100 outbound-interface 'eth0' #出接口是eth0
set nat source rule 100 translation address masquerade #snat成出接口IP上网
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1 #默认路由上网

5.2、L2TP接口

以下配置是选定用于对外服务的L2TP接口

set vpn ipsec ipsec-interfaces interface 'eth0'

5.3、L2TP配置

以下是L2TP的一些基本配置,可以实现让Windows,安卓,苹果等支持拨L2TPVPN的终端连接,其中重要点是,如果需要用户可以从公网拨L2TPVPN,则需要配置端口映射,比如下面的配置中对外提供的服务地址是192.168.2.2,如果你的公网IP是88.88.88.88,则需要把公网88.88.88.88的UDP1701端口映射给192.168.2.2的UDP1701,外部端口可以自定义,不一定要用公网的UDP1701,端口比较明显容易被封。

  1. set vpn l2tp remote-access authentication local-users username vyos password 'vyos@987': 设置本地用户 "vyos" 的 L2TP 认证密码是“vyos@987”。
  2. set vpn l2tp remote-access authentication mode 'local': 使用本地用户数据库进行 L2TP 认证。
  3. set vpn l2tp remote-access client-ip-pool start '100.255.255.2'set vpn l2tp remote-access client-ip-pool stop '100.255.255.254':设置 L2TP 客户端 IP 池的起始和结束地址。
  4. set vpn l2tp remote-access gateway-address '100.255.255.1': 设置 L2TP VPN 网关地址。
  5. set vpn l2tp remote-access ipsec-settings authentication mode 'pre-shared-secret': 使用预共享密钥进行 IPsec 认证。
  6. set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret 'l2tp@987': 设置预共享密钥为 'l2tp@987'。
  7. set vpn l2tp remote-access ipsec-settings ike-lifetime '3600': 设置 IKE 生命周期为 3600 秒。
  8. set vpn l2tp remote-access name-server '223.5.5.5': 设置 L2TP 客户端使用的 DNS 服务器地址。
  9. set vpn l2tp remote-access outside-address '192.168.2.2': 设置 L2TP VPN 的外部地址,即对外提供服务的地址。
set vpn l2tp remote-access authentication local-users username vyos password 'vyos@987'
set vpn l2tp remote-access authentication mode 'local'
set vpn l2tp remote-access client-ip-pool start '100.255.255.2'
set vpn l2tp remote-access client-ip-pool stop '100.255.255.254'
set vpn l2tp remote-access gateway-address '100.255.255.1'
set vpn l2tp remote-access ipsec-settings authentication mode 'pre-shared-secret'
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret 'l2tp@987'
set vpn l2tp remote-access ipsec-settings ike-lifetime '3600'
set vpn l2tp remote-access name-server '223.5.5.5'
set vpn l2tp remote-access outside-address '192.168.2.2'
commit #应用配置
save #保存配置

增加用户或者删除用户。

set vpn l2tp remote-access authentication local-users username vyos1 password 'vyos@987' #增加用户vyos1
delete vpn l2tp remote-access authentication local-users username vyos1 #删除用户vyos1

5.4、Windows测试

5.4.1、Windows+S

Windows+S 键一起按,调出搜索框,输入:vpn,选择:添加VPN连接

yydy_2024-01-18_20-45-55
yydy_2024-01-18_20-47-14

5.4.2、添加L2TPVPN

yydy_2024-01-18_20-55-49

5.4.3、连接L2TPVPN

Image 1 Image 2 Image 3

5.4.4、tracert路径验证

yydy_2024-01-18_21-01-27

六、vyos配置OpenConnect

6.1、基础配置

configure #配置模式
set interfaces ethernet eth0 address '192.168.2.2/24' 
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1
set nat source rule 100 outbound-interface 'eth0' 
set nat source rule 100 translation address 'masquerade'
commit #应用配置
save #保存配置

6.2、设置RSA创建证书

openssl req -newkey rsa:4096 -new -nodes -x509 -days 3650 -keyout /config/auth/sslserver.key -out /config/auth/sslserver.crt

yydy_2024-01-18_21-14-11

6.3、设置KEY创建证书

openssl req -new -x509 -key /config/auth/sslserver.key -out /config/auth/sslca.crt

yydy_2024-01-18_21-15-37

6.4、配置用户密码

set vpn openconnect authentication local-users username vyos password 'vyos@987'

增加用户或者删除用户。

set vpn openconnect authentication local-users username vyos1 password 'vyos@987' #增加用户vyos1
delete vpn openconnect authentication local-users username vyos1 #删除用户vyos1

6.5、配置认证模式

set vpn openconnect authentication mode 'local' #本地认证

6.6、配置监听端口

set vpn openconnect listen-ports tcp '55555'  #TCP和UDP端口可自定义,但是需要一样,比如都为:55555或者33333
set vpn openconnect listen-ports udp '55555'

6.7、配置用户网段

set vpn openconnect network-settings client-ip-settings subnet '100.254.255.0/24' #网段可以自定义

6.8、配置用户DNS

set vpn openconnect network-settings name-server '223.5.5.5'

6.9、配置下发路由

方式一和方式二下发的路由一样的,但是方式一会覆盖客户端本地网卡的默认路由,有时候在一些设备上会有问题,如果出现拨号之设备直接断网,请用方式二

6.9.1、方式一

set vpn openconnect network-settings push-route '0.0.0.0/0'

6.9.2、方式二

set vpn openconnect network-settings push-route '1.0.0.0/8'
set vpn openconnect network-settings push-route '2.0.0.0/7'
set vpn openconnect network-settings push-route '4.0.0.0/6'
set vpn openconnect network-settings push-route '8.0.0.0/5'
set vpn openconnect network-settings push-route '16.0.0.0/4'
set vpn openconnect network-settings push-route '32.0.0.0/3'
set vpn openconnect network-settings push-route '64.0.0.0/2'
set vpn openconnect network-settings push-route '128.0.0.0/1'

6.10、配置客户端crt

set vpn openconnect ssl ca-cert-file '/config/auth/sslca.crt'

6.11、配置服务端crt

set vpn openconnect ssl cert-file '/config/auth/sslserver.crt'

6.12、配置服务端key

set vpn openconnect ssl key-file '/config/auth/sslserver.key'
commit #应用配置
save #保存配置

6.13、Windows测试

软件下载地址可以跳转下面文章链接,查看1.3和1.4。

Ubuntu搭建Ocserv配置路由分流!
yydy_2024-01-18_21-50-58
yydy_2024-01-18_21-55-27
yydy_2024-01-18_21-58-02
yydy_2024-01-18_21-58-32
yydy_2024-01-18_21-59-03
yydy_2024-01-18_22-01-04

七、vyos配置PPTP

7.1、基础配置

configure #配置模式
set interfaces ethernet eth0 address '192.168.2.2/24' 
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1
set nat source rule 100 outbound-interface 'eth0' 
set nat source rule 100 translation address 'masquerade'
commit #应用配置
save #保存配置

7.2、PPTP接口

以下配置是选定用于对外服务的PPTP接口

set vpn ipsec ipsec-interfaces interface 'eth0'

7.3、PPTP配置

7.3.1、配置用户密码

  • 使用本地认证,用户名为 "vyos",密码为 "vyos@987"。
set vpn pptp remote-access authentication local-users username vyos password 'vyos@987'

7.3.2、配置认证模式和MPPE

  • 使用本地认证模式。
  • 首选使用 MPPE 加密。
set vpn pptp remote-access authentication mode 'local'
set vpn pptp remote-access authentication mppe 'prefer'

7.3.4、配置用户IP池和网关IP

  • 定义客户端 IP 池,范围为100.254.254.2到100.254.254.254。
  • 指定 VPN 网关地址为100.254.254.1。
set vpn pptp remote-access client-ip-pool start '100.254.254.2'
set vpn pptp remote-access client-ip-pool stop '100.254.254.254'
set vpn pptp remote-access gateway-address '100.254.254.1'

7.3.5、配置DNS服务器

  • 指定 DNS 服务器为 223.5.5.5。
set vpn pptp remote-access name-server '223.5.5.5'

7.3.6、配置服务IP

  • 指定 VPN 外部地址为 192.168.2.2。
set vpn pptp remote-access outside-address '192.168.2.2'
commit #应用配置
save #保存配置

7.4、Windows测试

7.4.1、Windows+S

Windows+S 键一起按,调出搜索框,输入:vpn,选择:添加VPN连接

yydy_2024-01-18_20-45-55
yydy_2024-01-18_20-47-14

7.4.2、添加PPTPVPN

yydy_2024-01-18_22-24-32

7.4.3、连接PPTPVPN

Image 1 Image 2 Image 3

7.4.4、tracert路径验证

yydy_2024-01-18_22-31-22

八、vyos配置SSTP

8.1、基础配置

configure #配置模式
set interfaces ethernet eth0 address '192.168.2.2/24' 
set protocols static route 0.0.0.0/0 next-hop 192.168.2.1
set nat source rule 100 outbound-interface 'eth0' 
set nat source rule 100 translation address 'masquerade'
commit #应用配置
save #保存配置

8.2、SSTP配置

  1. set vpn sstp authentication local-users username vyos password 'vyos@987': 配置本地用户认证,指定用户名为 'vyos',密码为 'vyos@987'。
  2. set vpn sstp authentication mode 'local': 配置认证模式为本地认证,即使用上述本地用户进行认证。
  3. set vpn sstp authentication protocols 'mschap-v2': 配置 SSTP 使用 MS-CHAPv2 协议进行认证。
  4. set vpn sstp client-ip-pool subnet '10.254.253.0/24': 配置 SSTP 分配给客户端的 IP 地址池是 '10.254.253.0/24'。
  5. set vpn sstp gateway-address '10.254.253.1': 配置 SSTP VPN 的网关地址,即 VPN 服务器的地址。
  6. set vpn sstp name-server '223.5.5.5': 配置 SSTP VPN 提供的 DNS 服务器地址。
  7. set vpn sstp ppp-options mppe 'prefer': 配置 SSTP 使用 MPPE 加密,优先发送 MPPE 请求。
  8. set vpn sstp ssl ca-cert-file '/config/auth/sslca.crt': 配置 SSTP VPN 使用的 CA 证书文件路径,就是上面配置的OpenConnect的CA。
  9. set vpn sstp ssl cert-file '/config/auth/sslserver.crt': 配置 SSTP VPN 使用的 SSL 证书文件路径,就是上面配置的OpenConnect的SSL-crt。
  10. set vpn sstp ssl key-file '/config/auth/sslserver.key': 配置 SSTP VPN 使用的 SSL 私钥文件路径,就是上面配置的OpenConnect的SSL-key。
set vpn sstp authentication local-users username vyos password 'vyos@987'
set vpn sstp authentication mode 'local'
set vpn sstp authentication protocols 'mschap-v2'
set vpn sstp client-ip-pool subnet '10.254.253.0/24'
set vpn sstp gateway-address '10.254.253.1'
set vpn sstp name-server '223.5.5.5'
set vpn sstp ppp-options mppe 'prefer'
set vpn sstp ssl ca-cert-file '/config/auth/sslca.crt'
set vpn sstp ssl cert-file '/config/auth/sslserver.crt'
set vpn sstp ssl key-file '/config/auth/sslserver.key'

8.3、Windows测试

8.3.1、Windows+S

Windows+S 键一起按,调出搜索框,输入:vpn,选择:添加VPN连接

yydy_2024-01-18_20-45-55
yydy_2024-01-18_20-47-14

8.3.2、添加SSTP

yydy_2024-01-18_22-51-58

8.3.3、连接SSTP

在Windows上测试一直报错,暂未找到问题,后续解决了再更新。
yydy_2024-01-21_00-04-14