51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

【Vyos-开源篇-4】- vpn for vyos 搭建 VPN 服务

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

一、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安装}

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

三、vyos基本配置 {#三-vyos基本配置}

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

四、vyos配置IPSec {#四-vyos配置IPSec}

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

4.1、基础配置 {#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-IPSec配置}

4.2.1、ESP-IKE {#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接口 {#4-2-2-IPSec接口}

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

set vpn ipsec ipsec-interfaces interface 'eth0'

4.2.3、Remote配置 {#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 {#五-vyos配置L2TP}

5.1、基础配置 {#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接口 {#5-2-L2TP接口}

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

set vpn ipsec ipsec-interfaces interface 'eth0'

5.3、L2TP配置 {#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-Windows测试}

5.4.1、Windows+S {#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 {#5-4-2-添加L2TPVPN}

yydy_2024-01-18_20-55-49

5.4.3、连接L2TPVPN {#5-4-3-连接L2TPVPN}

Image 1 Image 2 Image 3

5.4.4、tracert路径验证 {#5-4-4-tracert路径验证}

yydy_2024-01-18_21-01-27

六、vyos配置OpenConnect {#六-vyos配置OpenConnect}

6.1、基础配置 {#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创建证书 {#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创建证书 {#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、配置用户密码 {#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、配置认证模式 {#6-5-配置认证模式}

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

6.6、配置监听端口 {#6-6-配置监听端口}

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

6.7、配置用户网段 {#6-7-配置用户网段}

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

6.8、配置用户DNS {#6-8-配置用户DNS}

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

6.9、配置下发路由 {#6-9-配置下发路由}

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

6.9.1、方式一 {#6-9-1-方式一}

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

6.9.2、方式二 {#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 {#6-10-配置客户端crt}

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

6.11、配置服务端crt {#6-11-配置服务端crt}

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

6.12、配置服务端key {#6-12-配置服务端key}

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

6.13、Windows测试 {#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 {#七-vyos配置PPTP}

7.1、基础配置 {#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接口 {#7-2-PPTP接口}

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

set vpn ipsec ipsec-interfaces interface 'eth0'

7.3、PPTP配置 {#7-3-PPTP配置}

7.3.1、配置用户密码 {#7-3-1-配置用户密码}

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

7.3.2、配置认证模式和MPPE {#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 {#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服务器 {#7-3-5-配置DNS服务器}

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

7.3.6、配置服务IP {#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-Windows测试}

7.4.1、Windows+S {#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 {#7-4-2-添加PPTPVPN}

yydy_2024-01-18_22-24-32

7.4.3、连接PPTPVPN {#7-4-3-连接PPTPVPN}

Image 1 Image 2 Image 3

7.4.4、tracert路径验证 {#7-4-4-tracert路径验证}

yydy_2024-01-18_22-31-22

八、vyos配置SSTP {#八-vyos配置SSTP}

8.1、基础配置 {#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配置 {#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-Windows测试}

8.3.1、Windows+S {#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 {#8-3-2-添加SSTP}

yydy_2024-01-18_22-51-58

8.3.3、连接SSTP {#8-3-3-连接SSTP}

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

赞(0)
未经允许不得转载:工具盒子 » 【Vyos-开源篇-4】- vpn for vyos 搭建 VPN 服务