全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1954|回复: 20

AnyLink:一款基于ocserv的 SSL 扶墙 企业级解决方案

[复制链接]
发表于 2023-11-7 15:10:50 | 显示全部楼层 |阅读模式
AnyLink 是一款 SSL 扶墙 软件,它可以兼容 AnyConnect 以满足对企业内网的接入。另外你也可以像 x-ui 那样分配用户组以及规则,总之在 Clash 纷纷删库后使用三层扶墙当梯子确实是个退而求其次的方案。本文以CentOS 7为例,简单介绍 AnyLink 的部署及使用技巧。



准备工作
CentOS 7 服务器(AnyLink 服务端仅在 CentOS 7、CentOS 8、Ubuntu 18.04、Ubuntu 20.04 测试通过)
获取 anylink-deploy.tar.gz 并上传至服务器
获取域名证书(腾讯云、阿里云都可以免费签一年)
确认好网络环境
AnyLink 的 link_mode 参数有 tun、macvtap和tap模式。当然作者不推荐使用tap模式,实际测试下性能确实会大幅衰减。区别tun和macvtap这俩模式主要取决于环境,这边简单描述下就懂了。

tun模式
一般是云服务器使用,你可以理解成 NAT 了一层。(VMware中的NAT模式)

即扶墙客户端能访问服务器内网,但服务器内网不能访问扶墙客户端,就像在公司网络中放了一台路由器,扶墙客户端则是这台二级路由下的一个主机。被代理的IP段叫做安全路由(router),不被代理的IP段叫做非安全路由(norouter)。



为了方便演示我购买了一台云服务器,按 AnyLink 默认配置 192.168.90.0/24 (与服务器内网不同段)为例扶墙客户端分配的IP为 192.168.90.100-200,其网卡为 eth0 并出于 172.24.135.36/20 这个VPC中。


扶墙客户端连接的地址会以 /conf/server.toml 中所设定的内网(默认为 192.168.90.0/24)进行分配并作为安全路由,例如要访问服务器的VPC网络,在部署完成后需在面板添加 172.24.135.0/20 为安全路由。

macvtap模式
与 tun 模式不同的是,macvtap 模式少了一层NAT,直接接在服务器内网上(VMware中的桥接模式)

扶墙客户端在连上后分配的是服务器内网同段的地址,相当于是直接连接物理网络。因此 /conf/server.toml 中的网络参数需与服务器网卡一致,区别在于IP分配范围以避免IP冲突问题。

如何给扶墙客户端发公网IP
扯个题外话,例如我有宿迁移动 221.131.165.129/25 所有IP地址的使用权,但除业务外只有 200 - 254 属于空闲IP。那么使用macvtap模式设置的扶墙客户端分配的IP地址池应为:

#客户端分配的ip地址池
ipv4_master = "eth0"
ipv4_cidr = "221.131.165.129/25"
ipv4_gateway = "221.131.165.129"
ipv4_start = "221.131.165.200"
ipv4_end = "221.131.165.254"
当连接成功后,服务器将会分配 221.131.165.200-254 (按顺序或管理面板固定IP)给扶墙客户端。若内网环境为公网,则可以做到发公网IP的目的。

服务器设置
安全组又叫防火墙,云厂商默认开启的东西。AnyLink需要开放443和8800,分别用于连接和管理面板,有安全考虑的同学可以自行放行,一般我简单粗暴设置全放行。


安全组开放后,要关闭系统中的 selinux 和防火墙

如果你是本地机房也需要开放一个公网IP地址+端口供客户端远程连接,并且关闭selinux和firewalld

关闭selinux

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config # 永久关闭selinux(重启后生效)
setenforce 0 # 临时关闭selinux(不需要重启,立即生效)
关闭firewalld

systemctl stop firewalld # 临时关闭防火墙
systemctl disable firewalld # 永久关闭防火墙
部署 AnyLink
安装和配置
下载anylink,点击获取 anylink-deploy.tar.gz ,然后上传到服务器
SSH连接到,解压二进制包到/usr/local目录

tar -xzvf anylink-deploy.tar.gz -C /usr/local/
进入anylink目录

cd /usr/local/anylink-deploy
生成密码
password
的密文,请修改为你自己要设置的密码

注意密码不能有
$
符号,会被当成变量,也可以用单引号包起来
./anylink tool -p password
记录下 Passwd: 后的密钥,等会改配置文件要用

生成jwt密钥

./anylink tool -s
记录下 Secret: 后的密钥,等会改配置文件要用

修改 server.toml 文件
打开 https://github.com/bjdgyc/anylink/blob/main/server/conf/server-sample.toml 下载配置模板,然后重命名为 server.toml,开始修改配置文件:

#系统名称
issuer = "XX公司扶墙"
#后台管理用户
admin_user = "admin"
#pass 123456
admin_pass = "$2a$10$UQ7C.EoPifDeJh6d8.31TeSPQU7hM/NOM2nixmBucJpAuXDQNqNke"
# 留空表示不开启 otp, 开启otp后密码为  pass + 6位otp
# 生成 ./anylink tool -o
admin_otp = ""
jwt_secret = "abcdef.0123456789.abcdef"
系统名称在等会会用到,可以带空格。另外建议把后台用户名 admin_user 改掉,使用 admin 可能会存在风险。然后将上一步, Passwd: 后和 Secret: 后的密钥依次替换admin_pass和jwt_secret对应引号的内容。

往下有个 link_mode ,若为NAT模式则保持tun即可,想桥接到内网中请改为macvtap。将 ipv4_master 的 eth0 设置为服务器网卡,使用 ip addr 指令就能看到,一般不是eth0就是ens192。

接下来找到发布默认域,改成你的域名。例如 扶墙.itxe.net (与后面的证书保持一致),这个等下改下发配置文件也会用到,与系统名称一样要记住。

# 要发布的默认域
default_domain = " 扶墙.itxe.net"
最后是启用压缩功能,这个吃CPU算力。默认配置文件中不开,但正常的服务器开了反而节流也不会影响到速度,能相对的提升小包的转发性能。

修改 profile.xml 文件
从这个文件的23行开始看:
我们需要修改两个 HostAddress 为上面的发布默认域,另外我司ssl扶墙使用的是443端口,则写作

<HostAddress>扶墙.itxe.net:443</HostAddress>
另外将 HostName 改为刚刚写的名称:

<HostName>XX公司扶墙</HostName>
当扶墙客户端首次连接后,AnyLink服务器会向客户端下发该配置文件,以确保下次连接时可以直接在列表中选择该服务器,如你有多个ssl扶墙服务器请用 xx公司扶墙 - xxx 来区别,并将 中放入其他服务器。

传SSL证书
选择签发证书的nginx格式,会得到fullchaim.pem和private.key俩文件。fullchaim.pem重命名为扶墙_cert.crt,private.key重命名为扶墙_cert.key并上传至 /usr/local/anylink-deploy/conf 中。这个证书可以考虑配置好后吊销,因为AnyLink内置了 Let's Encrypt 证书且定时更新。

启动前需要设置的内容
tun
开启服务器ipv4转发

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
立即生效

sysctl -p
设置nat,请替换网卡名称为前面查看的内网网卡名称,另外,如果server.toml文件里面客户端的IP地址池不是默认的192.168.90.0/24,也请修改为对应的IP地址池
iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -o eth0 -j MASQUERADE
查看设置是否生效
iptables -nL -t nat
若显示上面配的规则,则ipv4转发生效

安装iptables-services,用于保存iptables配置,永久生效
yum install -y iptables-services
设置开机自启
systemctl enable iptables.service
保存当前iptables设置
service iptables save
若提示 iptables: Saving firewall rules to /etc/sysconfig/iptables: [ OK ] 则说明配置成功

macvtap
若选择桥接模式,请在 server.toml 中禁用NAT

#是否自动添加nat
iptables_nat = false
创建日志文件目录
请修改为自己配置的日志路径,不创建会启动失败,如果没有打开日志输出,可以跳过

mkdir /usr/local/anylink-deploy/log
启动 AnyLink
复制service文件到系统中

cp /usr/local/anylink-deploy/systemd/anylink.service /usr/lib/systemd/system/
启动anylink

systemctl start anylink
systemctl enable anylink
查看启动状态

systemctl status anylink
看到绿色的 Active: active (running) 则说明AnyLink启动成功。

配置管理面板
访问地址公网IP+端口(默认8800),输入账号(admin)和 密码(password)点击登录

http://扶墙.itxe.net:8800
自定义 SSL 扶墙
选择 其他设置 - 扶墙 对外地址,修改为配置文件中写的默认域

修改 Banner 信息及自定义首页,Banner信息将会在登录成功后在客户端显示



配置自动更新证书
选择 其他设置 - 证书设置 - Let's Encrypt证书,按照api填写就好了。这样就不用担心证书过期而报信任错误,每3个月将会自动续期一次。



企业配置项
如果你想搞统一认证账号,我推荐你搭个WinRadius(搞AD域再弄,或是freeredius指令我想对于小白是并不友好的),然后交给 Radius 服务器来认证



WinRadius下载: https://www.123pan.com/s/WekeVv-SKSY3.html

由于该软件并不支持第三方登录的OTP,在此我配置了公司的LDAP:



另外默认是sqlite3存储数据库,可能较为简单的是mysql数据库对接?但我还没尝试过,还请其他dalao研究以后在底下评论区告知。

原文 https://blog.naixi.net/article/anylink
发表于 2023-11-7 15:22:55 来自手机 | 显示全部楼层
没有shadowsocks之前就这么玩过。。少了个clash而已没必要倒退十年吧
发表于 2023-11-7 15:17:16 | 显示全部楼层
大佬,你的https://bbs.idc.moe/thread-28-1-1.html打不开了
发表于 2023-11-7 15:17:24 | 显示全部楼层
支持帮顶,有时间搞一搞
发表于 2023-11-7 15:50:22 | 显示全部楼层
我记得anylink的作者是实名的,你这样描述这个工具的用途,还很刻意得说上网代理,是不是害他
发表于 2023-11-7 16:12:29 | 显示全部楼层
企业用来进内网是极好的
发表于 2023-11-7 17:02:02 来自手机 | 显示全部楼层
本帖最后由 星星星河呀 于 2023-11-7 17:32 编辑

人就一办公SSL扶墙 这种协议早在墙特征库了,用这个扶墙,怕不是秒封
发表于 2023-11-7 18:11:12 | 显示全部楼层
小伙子 你的贴子很危险呐
发表于 2023-11-7 18:14:28 | 显示全部楼层
这种又没事。。。企业用的
发表于 2023-11-7 18:22:46 | 显示全部楼层
op**扶墙很好用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-1 10:25 , Processed in 0.070883 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表