文章介绍:使用当前最新滚动版vyos-1.5.0部署AnyLink SSLVPN,AnyLink是一个企业级SSLVPN软件,可以支持多人同时在线使用。基于 openconnect 协议开发,并且借鉴了 ocserv 的开发思路,可以完全兼容 AnyConnect 客户端,AnyLink 使用 TLS/DTLS 进行数据加密,因此需要 RSA 或 ECC 证书,可以通过 Let's Encrypt 和 TrustAsia 申请免费的 SSL 证书,AnyLink 服务端支持Centos,Ubuntu,Debian等系统,如需要安装在其他系统,需要服务端支持 tun/tap 功能、ip 设置等命令。
本期将详细介绍不同网络模式的配置方式,包括以下(tun模式:开启iptables_nat、不开启iptables_nat、arp代理;桥接模式:macvtap)。
一、项目来源
1.1、Gitee-bjdgyc
1.2、GitHub-bjdgyc
二、部署准备
2.1、vyos镜像
2.2、anylink服务端
2.3、一个域名(可选)
2.4、一个公网IP(可选)
2.5、VPN客户端
2.5.1、Cisco Secure Client
2.5.2、AnyLink Client
2.6、TOTP动态令牌
2.6.1、安卓动态令牌
2.6.2、苹果动态令牌
2.7、SSH工具
三、安装VyOS
3.1、安装
3.2、基础配置
configure
set interfaces ethernet eth0 address '192.168.6.117/24'
set protocols static route 0.0.0.0/0 next-hop 192.168.6.254
set service ntp server ntp1.aliyun.com
set service ssh port '22'
set system host-name 'AnyLink'
set system login banner post-login 'Welcome YYDY-AnyLink-SSLVPN'
set system login user sslvpn authentication encrypted-password anylink
set system name-server '192.168.100.3'
set system name-server '192.168.100.4'
set system time-zone 'Asia/Shanghai'
commit
save
四、安装AnyLink
4.1、进入root模式
sudo -i
4.2、拉取文件
sudo wget -P /tmp https://gitee.com/bjdgyc/anylink/releases/download/v0.12.2/anylink-0.12.2-linux-amd64.tar.gz
sudo wget -P /tmp https://github.com/bjdgyc/anylink/releases/download/v0.12.2/anylink-0.12.2-linux-amd64.tar.gz
4.3、解压文件
sudo tar -zxvf /tmp/anylink-0.12.2-linux-amd64.tar.gz
4.4、移动文件
sudo mv anylink-deploy/ /usr/local/
4.5、赋予权限
sudo chmod +x /usr/local/anylink-deploy/anylink
4.6、复制服务文件
sudo cp /usr/local/anylink-deploy/deploy/anylink.service /etc/systemd/system
4.7、赋予权限
sudo chmod +x /etc/systemd/system/anylink.service
4.8、开机自启
sudo systemctl enable anylink
五、自定义AnyLink
5.1、进入文件目录
sudo cd /usr/local/anylink-deploy
5.2、创建新密码(必改)
./anylink tool -p abc@123
Passwd:$2a$10$eO7aH3twg6xzsw/oY29ki9Joic8wrsF4ZhufVmGxVkC38h0jtn.dbK
5.3、创建jwt密钥(必改)
./anylink tool -s
Secret:sjjP3Me68K-ppXe-au4MppLifqbEgLu19gc1fl7DrZpBcE5donOPCgqer
5.4、创建动态令牌(可选)
./anylink tool -o
Otp:35TQE2F2AHYR6B3CKOXZVSZGGKLNLIM5HJ6VDG2TOEVRAGY3SVF5A
六、TUN网络模式,开启NAT
6.1、进入conf目录
sudo cd conf/
6.2、拷贝模版
sudo cp server-sample.toml server.toml
6.3、编辑server.toml
sudo nano server.toml
6.3.1、修改profile_name(建议)
profile_name = "vpn_tun"
6.3.2、开启日志(可选)
log_path = "./log"
6.3.3、修改issuer(建议)
issuer = "YYDY-AnyLink-SSLVPN"
6.3.4、修改管理员账户(可选)
admin_user = "yydy"
6.3.5、修改密码(必改)
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
6.3.6、修改jwt(必改)
jwt_secret = "abcdef.0123456789.abcdef"
6.3.7、开启otp(可选)
admin_otp = ""
6.3.8、修改TCP监听端口(可选)
server_addr = ":10443"
6.3.9、修改DTLS(可选)
#开启 DTLS
server_dtls = true
#UDP监听地址
server_dtls_addr = ":10443"
6.3.10、修改控制台端口(可选)
admin_addr = ":8800"
6.3.11、tcp代理协议(可选)
proxy_protocol = false
6.3.12、网络模式
link_mode = "tun"
6.3.13、客户端虚拟IP(可选)
ipv4_master = "eth0"
ipv4_cidr = "100.64.64.0/24"
ipv4_gateway = "100.64.64.254"
ipv4_start = "100.64.64.1"
ipv4_end = "100.64.64.253"
6.3.14、客户端接入数(可选)
max_client = 200
6.3.15、单用户并发数(可选)
max_user_client = 3
6.3.16、IP租赁时间(可选)
ip_lease = 86400
6.3.17、默认用户组(可选)
default_group = "LAN"
6.3.18、客户端失效检测时间(可选)
cstp_keepalive = 3
cstp_dpd = 20
mobile_keepalive = 4
mobile_dpd = 60
6.3.19、最大传输单元(可选)
mtu = 1460
6.3.20、默认搜索域(可选)
default_domain = "yangpin.link"
6.3.21、超时断开时间(可选)
idle_timeout = 0
6.3.22、会话过期时间(可选)
session_timeout = 3600
6.3.23、认证超时时间(可选)
auth_timeout = 0
6.3.24、审计间隔时间(可选)
audit_interval = 600
6.3.25、查看数据库(可选)
show_sql = false
6.3.26、添加nat(开启)
iptables_nat = true
configure
set nat source rule 1000 outbound-interface name 'eth0'
set nat source rule 1000 source address '100.64.64.0/24'
set nat source rule 1000 translation address 'masquerade'
save
6.3.27、压缩(可选)
compression = false
no_compress_limit = 256
6.3.28、客户端显示详细错误信息(可选)
display_error = false
6.3.29、排除出口ip路由(可选)
exclude_export_ip = true
6.4、开启服务
sudo systemctl start anylink
6.5、重启服务
sudo systemctl restart anylink
七、TUN网络模式,关闭NAT
7.1、网络模式
link_mode = "tun"
7.2、关闭nat(不开启)
iptables_nat = false
说明:VyOS不开启NAT方式就是下面的命令不配置。
set nat source rule 1000 outbound-interface name 'eth0'
set nat source rule 1000 source address '100.64.64.0/24'
set nat source rule 1000 translation address 'masquerade'
7.3、华为交换机添加静态路由
ip route-static 100.64.64.0 255.255.255.0 192.168.6.117 description to-anylink-virtual-ip
7.4、开启服务
sudo systemctl start anylink
7.5、重启服务
sudo systemctl restart anylink
八、TUN网络模式,ARP代理
8.1、网络模式
link_mode = "tun"
8.2、关闭nat(不开启)
iptables_nat = false
说明:VyOS不开启NAT方式就是下面的命令不配置。
set nat source rule 1000 outbound-interface name 'eth0'
set nat source rule 1000 source address '100.64.64.0/24'
set nat source rule 1000 translation address 'masquerade'
8.3、客户端虚拟IP
ipv4_master = "eth0"
ipv4_cidr = "192.168.6.0/24"
ipv4_gateway = "192.168.6.252"
ipv4_start = "192.168.6.150"
ipv4_end = "192.168.6.250"
8.4、开启ARP代理
8.4.1、vyos命令
configure
set system sysctl parameter net.ipv4.conf.all.proxy_arp value 1
commit
save
8.4.2、linux命令
echo "net.ipv4.conf.all.proxy_arp = 1" | sudo tee -a /etc/sysctl.conf
8.5、开启服务
sudo systemctl start anylink
8.6、重启服务
sudo systemctl restart anylink
九、BR桥接模式,macVTAP
9.1、ESXi开启ETH0口混杂模式
9.2、VyOS开启ETH0口混杂模式
sudo ip link set dev eth0 promisc on
9.3、关闭nat(不开启)
iptables_nat = false
说明:VyOS不开启NAT方式就是下面的命令不配置。
set nat source rule 1000 outbound-interface name 'eth0'
set nat source rule 1000 source address '100.64.64.0/24'
set nat source rule 1000 translation address 'masquerade'
9.4、网络模式
link_mode = "macvtap"
9.5、客户端虚拟IP
ipv4_master = "eth0"
ipv4_cidr = "192.168.6.0/24"
ipv4_gateway = "192.168.6.254"
ipv4_start = "192.168.6.150"
ipv4_end = "192.168.6.250"
9.6、开启服务
sudo systemctl start anylink
9.7、重启服务
sudo systemctl restart anylink
十、Web功能配置
10.1、基础信息配置
10.1.1、邮箱配置
10.1.2、证书设置
10.1.3、其他设置
10.2、创建用户组列表
10.2.1、删除默认组
10.2.2、创建内网用户组
10.2.3、创建全局用户组
10.2.4、创建域名分流用户组
10.3、创建用户
戌、客户端测试
11.1、tun模式,开启nat
11.1.1、测试LAN组
11.1.1.1、tracert测试
11.1.1.2、ping测试
11.1.1.3、tcping测试
11.1.2、测试ALL组
11.1.2.1、tracert测试
11.1.3、测试FAST组
11.1.3.1、tracert测试
11.2、tun模式,关闭nat
11.2.1、测试LAN组
11.3、tun模式,arp代理
11.3.1、测试LAN组
11.3.1.1、tracert测试
11.3.1.2、ping测试
11.3.1.3、tcping测试
11.3.2、测试ALL组
11.3.2.1、tracert测试
11.3.3、测试FAST组
11.3.3.1、tracert测试
11.4、br模式,macvtap
11.4.1、测试LAN组
11.4.1.1、tracert测试
11.4.1.2、ping测试
11.4.1.3、tcping测试
11.4.2、测试ALL组
11.4.2.1、tracert测试
11.4.3、测试FAST组
11.4.3.1、tracert测试
打、拓展
12.1、DNS解析问题
在客户端上测试域名解析时,请避免使用nslookup,相反,请依赖浏览器的nslookup(1、chrome://net-internals/#dns;2、edge://net-internals/#dns)或使用ping命令。这是因为nslookup不依赖于操作系统DNS解析器。AnyConnect不会通过特定接口强制DNS请求,但根据拆分DNS配置允许或拒绝该请求。为了强制DNS解析器尝试请求的可接受DNS服务器,切分DNS测试必须仅对依赖本地DNS解析器进行域名解析的应用程序(例如,除nslookup、dig和自身处理DNS解析的类似应用程序之外的所有应用程序)执行。
12.2、profile_name配置
sudo cd /usr/local/anylink-deploy/conf
sudo nano profile.xml
C:\ProgramData\Cisco\Cisco Secure Client\VPN\Profile
/opt/cisco/anyconnect/profile
12.3、全局模式打不开网页
set interfaces ethernet eth0 mtu 1476
set interfaces ethernet eth0 ip adjust-mss 1200