文章说明:介绍在vyos软路由上配置vpn服务,提供用户私有vpn连接,目前vyos内置了如下几种vpn服务。
一、vpn介绍 {#一-vpn介绍}
-
IPSec
(Internet Protocol Security):- 描述: IPsec 是一种广泛用于实现虚拟专用网络(VPN)的协议套件。它通过对 IP 数据包进行加密和身份验证来提供网络通信的安全性。
- 特点: 提供对网络层的安全性,支持加密和身份验证,常用于 site-to-site VPN 或远程访问 VPN。
-
L2TP
(Layer 2 Tunneling Protocol):- 描述: L2TP 是一种隧道协议,通常与 IPsec 结合使用,创建安全的 VPN 连接。它允许在公共网络上创建私有连接。
- 特点: 主要用于远程用户接入 VPN 网络,提供加密和身份验证。
-
OpenConnect
:- 描述: OpenConnect 是一个支持 SSL VPN 的客户端,常用于通过 HTTPS 连接到 VPN 服务器。它提供对各种 VPN 协议的支持,包括 Cisco AnyConnect 和 Juniper Pulse Connect Secure。
- 特点: 能够穿越网络防火墙,并通过 HTTPS 实现安全连接。
-
PPTP
(Point-to-Point Tunneling Protocol):- 描述: PPTP 是一种过时的 VPN 协议,通过创建点对点的虚拟专用网络连接来实现安全通信。然而,由于其安全性较差,现在不再推荐使用。
- 特点: 不太安全,已经被更安全的协议取代,不建议使用。
-
RSA Keys
:- 描述: RSA 是一种非对称加密算法,常用于创建公钥和私钥,用于安全通信和身份验证。
- 特点: 提供了一种强大的加密和身份验证机制,常用于 VPN 连接中的密钥交换和数字签名。
-
SSTP
(Secure Socket Tunneling Protocol):- 描述: SSTP 是一种利用 SSL 加密的 VPN 协议,通常用于通过 HTTPS 端口(443)的安全通信。
- 特点: 提供强大的加密,适用于穿越网络防火墙,常用于 Windows 环境中。
二、vyos安装 {#二-vyos安装}
三、vyos基本配置 {#三-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配置说明
-
ESP Group 配置:
compression 'disable'
: 禁用 ESP 组的压缩。lifetime '3600'
: 设置 ESP 组的生命周期为 3600 秒。mode 'tunnel'
: 将 ESP 组设置为隧道模式。pfs 'dh-group2'
: 使用 Diffie-Hellman 群组2进行 Perfect Forward Secrecy。
-
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换成域名也可以,参考下面说明
-
authentication mode 'pre-shared-secret'
: 使用预共享密钥进行身份验证。 -
authentication pre-shared-secret 'ipsecvpn@987'
: 设置预共享密钥为 'ipsecvpn@987'。 -
authentication remote-id '88.88.88.88'
: 设置远程身份标识为 '88.88.88.88',即对端公网IP或者域名。 -
connection-type 'initiate'
: 设定连接类型为主动模式,即本端主动发起连接。 -
default-esp-group 'ESP-01'
: 设置默认的 ESP 组为 'ESP-01'。 -
force-encapsulation 'enable'
: 启用esp强制封装udp,无需再设定NAT穿越 -
ike-group 'IKE-01'
: 设置 IKE 组为 'IKE-01'。 -
ikev2-reauth 'inherit'
: 继承 IKEv2 重新验证的设置。 -
local-address '192.168.2.2'
: 本地 IP 地址为 '192.168.2.2',即eth0。 -
tunnel 1 local prefix '100.255.255.1/32'
: 设置隧道1的本地前缀,即dum0 -
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,端口比较明显容易被封。
-
set vpn l2tp remote-access authentication local-users username vyos password 'vyos@987'
: 设置本地用户 "vyos" 的 L2TP 认证密码是"vyos@987"。 -
set vpn l2tp remote-access authentication mode 'local'
: 使用本地用户数据库进行 L2TP 认证。 -
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 池的起始和结束地址。 -
set vpn l2tp remote-access gateway-address '100.255.255.1'
: 设置 L2TP VPN 网关地址。 -
set vpn l2tp remote-access ipsec-settings authentication mode 'pre-shared-secret'
: 使用预共享密钥进行 IPsec 认证。 -
set vpn l2tp remote-access ipsec-settings authentication pre-shared-secret 'l2tp@987'
: 设置预共享密钥为 'l2tp@987'。 -
set vpn l2tp remote-access ipsec-settings ike-lifetime '3600'
: 设置 IKE 生命周期为 3600 秒。 -
set vpn l2tp remote-access name-server '223.5.5.5'
: 设置 L2TP 客户端使用的 DNS 服务器地址。 -
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连接
5.4.2、添加L2TPVPN {#5-4-2-添加L2TPVPN}
5.4.3、连接L2TPVPN {#5-4-3-连接L2TPVPN}
5.4.4、tracert路径验证 {#5-4-4-tracert路径验证}
六、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
6.3、设置KEY创建证书 {#6-3-设置KEY创建证书}
openssl req -new -x509 -key /config/auth/sslserver.key -out /config/auth/sslca.crt
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。
七、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连接
7.4.2、添加PPTPVPN {#7-4-2-添加PPTPVPN}
7.4.3、连接PPTPVPN {#7-4-3-连接PPTPVPN}
7.4.4、tracert路径验证 {#7-4-4-tracert路径验证}
八、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配置}
-
set vpn sstp authentication local-users username vyos password 'vyos@987'
: 配置本地用户认证,指定用户名为 'vyos',密码为 'vyos@987'。 -
set vpn sstp authentication mode 'local'
: 配置认证模式为本地认证,即使用上述本地用户进行认证。 -
set vpn sstp authentication protocols 'mschap-v2'
: 配置 SSTP 使用 MS-CHAPv2 协议进行认证。 -
set vpn sstp client-ip-pool subnet '10.254.253.0/24'
: 配置 SSTP 分配给客户端的 IP 地址池是 '10.254.253.0/24'。 -
set vpn sstp gateway-address '10.254.253.1'
: 配置 SSTP VPN 的网关地址,即 VPN 服务器的地址。 -
set vpn sstp name-server '223.5.5.5'
: 配置 SSTP VPN 提供的 DNS 服务器地址。 -
set vpn sstp ppp-options mppe 'prefer'
: 配置 SSTP 使用 MPPE 加密,优先发送 MPPE 请求。 -
set vpn sstp ssl ca-cert-file '/config/auth/sslca.crt'
: 配置 SSTP VPN 使用的 CA 证书文件路径,就是上面配置的OpenConnect的CA。 -
set vpn sstp ssl cert-file '/config/auth/sslserver.crt'
: 配置 SSTP VPN 使用的 SSL 证书文件路径,就是上面配置的OpenConnect的SSL-crt。 -
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连接
8.3.2、添加SSTP {#8-3-2-添加SSTP}
8.3.3、连接SSTP {#8-3-3-连接SSTP}
在Windows上测试一直报错,暂未找到问题,后续解决了再更新。