文章介绍:开源篇21中介绍vyos使用二进制模式部署AnyLink,附带解释了多种网络模式的配置方式,本期介绍使用vyos内置容器命令,使用docker的方式部署,vyos中原生安装的是podman与docker类似,docker安装anylink采用docker run命令,podman则是podman run。

Podman 和 Docker 是两种用于管理容器的工具,虽然它们在功能上有许多相似之处,但也有一些重要的区别:

  1. 架构设计

    • Docker:采用客户端-服务端架构,即有一个守护进程(dockerd),客户端通过 Docker API 与守护进程通信来管理容器。这意味着 Docker 需要守护进程持续运行来支持容器操作。
    • Podman:无守护进程。Podman 是一个“无守护进程”的容器管理工具,用户直接与容器交互,而不需要运行任何后台守护进程,这使得它更轻量化,适合没有长期运行的服务需求的场景。
  2. 权限管理

    • Docker:默认需要 root 权限运行,虽然也可以通过 rootless mode 实现无 root 权限运行,但实现上复杂,且可能有一些功能限制。
    • Podman:天然支持无 root 运行(rootless containers),安全性更高,特别适合多用户环境中不希望赋予 root 权限的情况。
  3. 容器与 Pod 支持

    • Docker:主要管理单个容器,虽然可以通过 Docker Compose 等工具管理多个容器的编排,但每个容器是独立运行的。
    • Podman:直接支持 Kubernetes 风格的 Pod,允许多个容器在同一个 Pod 中运行,共享网络和存储空间。这使得 Podman 更容易与 Kubernetes 环境集成。
  4. 兼容性

    • Docker:与 Docker API 和 Docker Compose 生态紧密集成,有广泛的社区支持和插件生态。
    • Podman:与 Docker 兼容,几乎所有的 Docker 命令在 Podman 中也能正常使用(如 podman run 类似于 docker run)。此外,Podman 还可以生成 Kubernetes 的 YAML 配置,便于迁移到 Kubernetes。
  5. 镜像管理

    • Docker:依赖 Docker Hub 作为默认的镜像仓库,使用 docker pull 从 Docker Hub 拉取镜像。
    • Podman:也可以使用 Docker Hub,但支持使用 containers/image 库来与多种镜像仓库交互,更灵活。
  6. 运行环境

    • Docker:需要安装 Docker 守护进程才能运行容器。
    • Podman:由于无守护进程设计,可以更灵活地在没有 Docker 守护进程的环境中运行。

总结来说,Podman 和 Docker 都能管理容器,但 Podman 更加轻量、安全,特别适合需要无守护进程和无 root 权限的场景,而 Docker 则因其成熟的生态系统和 API 兼容性在广泛的场景中依然非常受欢迎。

一、项目来源

1.1、Gitee-bjdgyc

bjdgyc/anylink

1.2、GitHub-bjdgyc

bjdgyc/anylink

二、部署准备

2.1、vyos镜像

vyos-1.5-rolling-202408250024-generic-amd64.iso vyos-1.5-rolling-202408250024-generic-amd64.iso

2.2、anylink服务端

anylink-0.12.2-linux-amd64.tar.gz anylink-0.12.2-linux-amd64.tar.gz

2.3、一个域名(可选)

最新版本v0.12.2支持不用域名连接,可以直接用IP+端口模式连接,如果是企业使用建议用域名,并申请安全证书。

Namesilo最便宜的域名一年不到15元(申请后托管cloudflare)

ClouDNS,每个账户提供一个免费的二级域名(申请后托管cloudflare)

2.4、一个公网IP(可选)

如果你安装AnyLink只是在内网使用可以没有公网IP,如果你要从公网拨号访问内网,则需要公网IP,如果你的公司出口没有公网IP,你可以选择使用FRP,NPS等内网穿透工具,本期不做介绍。

2.5、VPN客户端

2.5.1、Cisco Secure Client

下面的链接由博主提供免费Cisco官网的最新客户端软件,和免费开源的OpenConnect客户端下载地址,以及使用指导。

点我下载:Cisco Secure Client

该软件是GitHub一位项目开发者专门为AnyLink开发的客户端(仅支持Windwos,macOS,Linux)。

yydy_2024-08-27_23-49-35

github-主页-anylink-client

点我下载:AnyLink Client

2.6、TOTP动态令牌

AnyLink SSLVPN支持用户名密码+六位数字动态令牌认证。

2.6.1、安卓动态令牌

Andoid

2.6.2、苹果动态令牌

iOS

2.7、SSH工具

MobaXterm

三、安装VyOS

3.1、安装

如果你不会使用VMware安装vyos系统,请先查看如下教程。

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

3.2、基础配置

configure
set interfaces ethernet eth0 address '192.168.76.253/24'
set protocols static route 0.0.0.0/0 next-hop 192.168.76.1
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 vyos authentication encrypted-password vyos
set system name-server 192.168.76.1
set system time-zone 'Asia/Shanghai'
commit
save

四、安装AnyLink

4.1、拉取镜像

sudo podman pull bjdgyc/anylink:latest
sudo podman pull registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:latest

yydy_2024-09-21_22-31-38

4.2、生成密码

sudo podman run -it --rm bjdgyc/anylink tool -p 12345678

4.3、生成 jwtsecret

sudo podman run -it --rm bjdgyc/anylink tool -s

4.4、创建容器外部文件存储位置

sudo mkdir -p /config/podman/anylink-deploy/conf && sudo mkdir -p /config/podman/anylink-deploy/log

4.5、启动容器

4.5.1、podman run 模式

sudo podman run -itd --name anylink --privileged \
    --net host \
    -p 443:443 -p 8800:8800 -p 443:443/udp \
    -v /config/podman/anylink-deploy/conf:/app/conf \
    -v /config/podman/anylink-deploy/log:/app/log \
    --restart=always \
    bjdgyc/anylink
sudo podman run -itd --name anylink --privileged \
    --net host \
    -p 443:443 -p 8800:8800 -p 443:443/udp \
    -v /config/podman/anylink-deploy/conf:/app/conf \
    -v /config/podman/anylink-deploy/log:/app/log \
    --restart=always \
    registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:latest

4.5.2、set container 模式

set container name anylink allow-host-networks
set container name anylink image bjdgyc/anylink
set container name anylink memory '0'
set container name anylink port 443 destination '443'
set container name anylink port 443 protocol 'tcp'
set container name anylink port 443 source '443'
set container name anylink port 8800 destination '8800'
set container name anylink port 8800 protocol 'tcp'
set container name anylink port 8800 source '8800'
set container name anylink port dtls destination '443'
set container name anylink port dtls protocol 'udp'
set container name anylink port dtls source '443'
set container name anylink restart 'always'
set container name anylink volume conf destination '/app/conf'
set container name anylink volume conf source '/config/podman/anylink-deploy/conf'
set container name anylink volume log destination '/app/log'
set container name anylink volume log source '/config/podman/anylink-deploy/log'
set container name anylink allow-host-networks
set container name anylink image 'registry.cn-hangzhou.aliyuncs.com/bjdgyc/anylink:latest'
set container name anylink memory '0'
set container name anylink port 443 destination '443'
set container name anylink port 443 protocol 'tcp'
set container name anylink port 443 source '443'
set container name anylink port 8800 destination '8800'
set container name anylink port 8800 protocol 'tcp'
set container name anylink port 8800 source '8800'
set container name anylink port dtls destination '443'
set container name anylink port dtls protocol 'udp'
set container name anylink port dtls source '443'
set container name anylink restart 'always'
set container name anylink volume conf destination '/app/conf'
set container name anylink volume conf source '/config/podman/anylink-deploy/conf'
set container name anylink volume log destination '/app/log'
set container name anylink volume log source '/config/podman/anylink-deploy/log'

4.6、进入anylink目录

cd /config/podman/anylink

4.7、复制server.toml模板

sudo cp server-sample.toml server.toml

4.8、编辑server.toml

详细参考开源篇-21,步骤6.3

sudo nano server.toml

4.9、编辑profile.xml

详细参考开源篇-21,步骤12.2

sudo nano profile.xml

4.9、重启服务

4.9.1、podman run 模式

sudo podman restart anylink

4.9.2、set container 模式

run restart container anylink
restart container anylink

五、开机自启动

set container 模式配置支持开机自启动容器,podman run 模式配置需要添加下面的操作。

sudo nano /config/scripts/vyos-postconfig-bootup.script
sudo podman start anylink

yydy_2024-09-22_12-30-08