文章说明:介绍在vyos软路由上配置vpn服务,提供用户私有vpn连接,目前vyos内置了如下几种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配置IPSec
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
-
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接口
set vpn ipsec ipsec-interfaces interface 'eth0'
4.2.3、Remote配置
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的本地前缀,即dum0tunnel 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接口
set vpn ipsec ipsec-interfaces interface 'eth0'
5.3、L2TP配置
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.1、Windows+S
5.4.2、添加L2TPVPN
5.4.3、连接L2TPVPN
5.4.4、tracert路径验证
六、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
6.3、设置KEY创建证书
openssl req -new -x509 -key /config/auth/sslserver.key -out /config/auth/sslca.crt
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测试
七、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接口
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
7.4.2、添加PPTPVPN
7.4.3、连接PPTPVPN
7.4.4、tracert路径验证
八、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配置
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.1、Windows+S
8.3.2、添加SSTP
8.3.3、连接SSTP