Softether VPN 打通 Kubernetes 调试网络

简介: 通过 Softether VPN 打通 Kubernetes 调试网络,其中包括无拆分隧道限制的版本,可以自定义推送路由

介绍

Kubernetes 提供了多种对外暴露服务的方式

对于开发调试来说,使用 VPN 方式打通 本机开发环境 与 Cluster 之间的网络,会变得十分方便

SoftEther VPN

选用 SoftEther VPN 主要原因是

  • 支持通过单端口多种VPN接入方式,比如 SoftEtherVPN ClientOpenVPN
  • 有统一的账户管理、分组管理、权限控制、拆分隧道 等功能

部署介绍

  • 自定义部署:支持拆分隧道功能,需要下载客户端进行管理
  • 无配置快速部署:不支持拆分隧道功能,可以不连接远程管理,开箱即用

自定义部署

使用镜像 abyssviper/softethervpn ,该镜像编译基于 alpine  基础镜像编译,仅保留了 vpnserver, 非常轻量

并且去除了 拆分隧道 限制,可以向 VPN 客户端  推送定制路由

完整配置文件

创建发布配置文件  deployment-softethervpn.yaml

apiVersion: apps/v1
kind: Deployment
metadata:  name: vpn
  namespace: devops
spec:  selector:   matchLabels:     app: softether-vpnserver
  template:    metadata:      labels:        app: softether-vpnserver
    spec:      containers:      - name: softether-vpn-alpine
        image: abyssviper/softethervpn
        imagePullPolicy: IfNotPresent
        ports:        - containerPort: 5555          name: connect
          protocol: TCP
        livenessProbe:          tcpSocket:            port: 5555          initialDelaySeconds: 60          timeoutSeconds: 5          failureThreshold: 12        readinessProbe:          tcpSocket:            port: 5555        resources:          limits:            cpu: 1000m
            memory: 200Mi
          requests:            cpu: 500m
            memory: 100Mi
        volumeMounts:        - name: softether-vpn-storge
          subPath: softethervpn/vpn_server.config
          mountPath: /opt/vpnserver/vpn_server.config
        - name: softether-vpn-storge
          subPath: softethervpn/server_log
          mountPath: /opt/vpnserver/server_log
        - name: softether-vpn-storge
          subPath: softethervpn/packet_log
          mountPath: /opt/vpnserver/packet_log
        - name: softether-vpn-storge
          subPath: softethervpn/security_log
          mountPath: /opt/vpnserver/security_log
      volumes:      - name: softether-vpn-storge
        persistentVolumeClaim:          claimName: vpn-pvc
---apiVersion: v1
kind: Service
metadata:  name: vpn
  namespace: devops
spec:  selector:    app: softether-vpnserver
  type: NodePort
  ports:  - name: connect
    port: 5555    nodePort: 30003


创建PV, PVC配置文件  pvc-softethervpn.yaml  本文使用 NFS

apiVersion: v1
kind: PersistentVolume
metadata:  name: vpn-pv
spec:  capacity:    storage: 100Gi
  accessModes:  - ReadWriteMany
  persistentVolumeReclaimPolicy: Delete
  nfs:    server: 192.168.7.40    path: /data/kubernetes
---apiVersion: v1
kind: PersistentVolumeClaim
metadata:  name: vpn-pvc
  namespace: devops
spec:  accessModes:    - ReadWriteMany
  resources:    requests:      storage: 1Gi


首先创建发布 PV, PVC 配置

kubectl apply -f pvc-softethervpn.yaml
kubectl apply -f deployment-softethervpn.yaml


管理

管理工具下载

通过 SoftEtherVPN 官方提供的 Manager 工具进行管理(下载地址

网络异常,图片无法展示
|


连接配置

配置服务端地址以及端口, 第一次连接需要手动设置管理密码

网络异常,图片无法展示
|


配置 SecureNAT 和 用户

连接成功后,通过 管理虚拟HUB(A) —》虚拟 NAT 和 虚拟 DHCP 服务器(V) —》启用 SecureNAT(E) —》SecureNAT配置(C)

网络异常,图片无法展示
|

  • 网关配置:如果填写,则本地VPN客户端流量默认路由走服务端,不需要推送路由;推荐使用本地网关+路由推送的方式
  • DNS配置:如果需要使用DNS解析(example: my-nginx.default.svc.cluster.local),需要配置集群内 CoreDNS 的 Service 地址
  • 路由推送:路由推送格式如图所示,IP网络地址/子网掩码/网关IP地址,网关IP地址填写 SecureNAT 配置的网关地址; 一般需要推送 Kubernetes Calico 网段 以及 SVC网段


在  管理虚拟HUB(A) 中,添加一个用户

网络异常,图片无法展示
|

配置OpenVPN

通过 VPN 管理工具,启用 OpenVPN 功能,生成 OpenVPN Client 配置样本文件

网络异常,图片无法展示
|

解压后,对 access_l3.ovpn 进行编辑

网络异常,图片无法展示
|

按照如下的配置进行修改,其中

  • remote: 上述 Kubernetes 发布 VPN 配置文件的 Service 地址
  • proto: 使用 TCP 作为连接协议,也可以使用 UDP,注意修改发布 VPN 时 YAML 配置文件的 端口映射配置
  • ca:  添加 ca标签,填写 VPN Server 配置中的 证书信息,证书信息获取方式见后面

```ini

dev tun
proto tcp
remote 192.168.7.200 30003cipher AES-128-CBC
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
client
verb 3auth-user-pass
<ca>
-----BEGIN CERTIFICATE-----
从如下配置中获取
-----END CERTIFICATE-----
</ca>


可以通过打开 编辑设置(D) 找到证书信息 或  加密与网络(E) 导出配置文件

网络异常,图片无法展示
|

网络异常,图片无法展示
|

连接

SoftEtherVPN Client

通过官网下载连接客户端,适用于 Windows / Linux;推荐 Linux 与 OSX 中使用 OpenVPN 的方式

  • 需要填写 主机名、端口号、虚拟HUB名、账号密码
  • SoftEtherVPN Client 支持同时连接多个VPNServer,只需要创建多个虚拟网络适配器即可

网络异常,图片无法展示
|

OpenVPN

下载Open VPN 客户端: Windows下载地址OSX下载地址

通过上述配置的配置文件即可进行连接

  • SoftEtherVPN Server 可以设置多个虚拟 HUB;对于OpenVPN来说,通过 用户名@HUB 的方式指定 HUB,直接使用用户名默认是 Default HUB
  • 例如:VPN HUB中的 test 用户,用户名为:test@VPN

网络异常,图片无法展示
|

验证

VPN连接成功后,可以进行 DNS 解析设置 以及 访问测试

网络异常,图片无法展示
|

ArgoCD 为例进行访问测试

网络异常,图片无法展示
|

数据持久化

  • 配置的持久化: 只需要持久化 vpn_server.config 即可
  • 日志的持久化: server_logpacket_logsecurity_log 三个文件夹持久化即可
  • 注意点: 需要注意的是,SoftEtherVPN Server 并不会在更改配置(添加用户,更改SecuretNAT等)后马上写入 vpn_server.config, 需要等待一段时间间隔才会落地到 vpn_server.config 文件

无配置快速部署

快速部署配置,选型的镜像为 siomiz/softethervpn, 该镜像同样有基于 alpine 版本,并且会启动容器时进行快速初始化,并创建可用的账户,非常方便;不过该镜像 不支持拆分隧道功能 ,无法推送定制路由

配置文件

创建发布配置文件  deployment-softethervpn.yaml

apiVersion: apps/v1
kind: Deployment
metadata:  name: vpn
  namespace: devops
spec:  selector:   matchLabels:     app: softether-vpnserver
  template:    metadata:      labels:        app: softether-vpnserver
    spec:      containers:      - name: softether-vpn-alpine
        image: siomiz/softethervpn
        imagePullPolicy: IfNotPresent
        ports:        - containerPort: 5555          name: connect
          protocol: TCP
        livenessProbe:          tcpSocket:            port: 5555          initialDelaySeconds: 60          timeoutSeconds: 5          failureThreshold: 12        readinessProbe:          tcpSocket:            port: 5555        resources:          limits:            cpu: 1000m
            memory: 200Mi
          requests:            cpu: 500m
            memory: 100Mi
---apiVersion: v1
kind: Service
metadata:  name: vpn
  namespace: devops
spec:  selector:    app: softether-vpnserver
  type: NodePort
  ports:  - name: connect
    port: 5555    nodePort: 30003


发布到 Kubernetes 中

kubectl apply -f deployment-softethervpn.yaml


查看连接信息

通过 logs 查看日志信息,从中查看默认生成的 SoftEtherVPN 账户 以及 OpenVPN 配置文件

kubectl logs -f-n devops vpn-b55fb8f4-jmxqh

如下,可以看出 用户名为 user9703 密码为 6758.1071.6532.2086.9735, OpenVPN 配置文件 等信息

  • OpenVPN 连接的 proto 以及 remote 信息需要更改为合适的,具体参照自定义部署
# [!!] This image requires --cap-add NET_ADMIN# ========================# user9703# 6758.1071.6532.2086.9735# ========================# Version 4.34 Build 9745   (English)dev tun
proto udp
remote _unregistered_vpn528125132.v4.softether.net 1194;http-proxy-retry
;http-proxy [proxy server] [proxy port]
cipher AES-128-CBC
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
client
verb 3auth-user-pass
<ca>
-----BEGIN CERTIFICATE-----
MIIDyjCCArKgAwIBAgIBADANBgkqhkiG9w0BAQsFADBkMRswGQYDVQQDDBJ2cG4t
YjU1ZmI4ZjQtam14cWgxGzAZBgNVBAoMEnZwbi1iNTVmYjhmNC1qbXhxaDEbMBkG
A1UECwwSdnBuLWI1NWZiOGY0LWpteHFoMQswCQYDVQQGEwJVUzAeFw0yMDA4MzEx
NjM2NDNaFw0zNzEyMzExNjM2NDNaMGQxGzAZBgNVBAMMEnZwbi1iNTVmYjhmNC1q
bXhxaDEbMBkGA1UECgwSdnBuLWI1NWZiOGY0LWpteHFoMRswGQYDVQQLDBJ2cG4t
YjU1ZmI4ZjQtam14cWgxCzAJBgNVBAYTAlVTMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEA9j++0cYr7/1enukSjhzA37s01SWNazUcpgEjrclfikuzKiw0
M7bJGEjM8eJTUqvtIwJOkWVbrVfVTX1zV/yCenFns05WRSud2oEGyXWh0oa8aChv
w/S+KYdGub4sLkwDbIfGEhJQIXO3iQ9ecdjX+QFUlOL7PdCDyxc6wao2ZsjwCeLt
oamj8AOVH+w0E24OC0H3eiJ5YMKWo56JwH0spbwl/xONq1PfUuP494dG6C7sOMWS
DIW3OD3Bo071B9A5OGtE/fRUe56ZxsOZySlhaI1Yl8LZvZtSdkAhLByKYTjmKd7J
NbCWJUMiLCSIxRFAjxCDjmBrEBGkAtM4v+PC1wIDAQABo4GGMIGDMA8GA1UdEwEB
/wQFMAMBAf8wCwYDVR0PBAQDAgH2MGMGA1UdJQRcMFoGCCsGAQUFBwMBBggrBgEF
BQcDAgYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEFBQcDBQYIKwYBBQUHAwYGCCsG
AQUFBwMHBggrBgEFBQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQELBQADggEBALRC
1HKokh3KwpgKjznMwOR83bPu8QveHWr0GrlzseKxqHGJcTy0sxnkfk3mAu9v8m4a
UACj3H0opouRAqOTdbogCWXcERwLM1084wehyeUZKX9gfcWGbAPWVjcY1kC5KePs
IXWhEMC56wIGMFs4mS5vx7aNVE9k4Ssrnf7T3mkM/ACrN9dg+/H2CVxNr5FTQIwy
IGTC3AP5WLPVfEk5SByEOZqFRiBIDDhvKU4gT4cD2+FHLM6OM8Z09qGs8uq6KLr6
LfUjc/c5CI+FInmm1hLB3NZug17TEaVchXeQNs921wKOOWoCKucToOPXkwYE1V/c
zc7doXSaSkrKyIwCqCY=-----END CERTIFICATE-----
</ca>
;<cert>
;-----BEGIN CERTIFICATE-----
;
;-----END CERTIFICATE-----
;</cert>
;<key>
;-----BEGIN RSA PRIVATE KEY-----
;
;-----END RSA PRIVATE KEY-----
;</key>
# Creating user(s): user9703# [initial setup OK]


验证

SoftEtherVPN Client 连接后,访问验证

网络异常,图片无法展示
|

其他配置

该镜像提供了很多初始化配置信息,具体可以参考官方配置信息



相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
3月前
|
运维 Kubernetes 前端开发
如何用 eBPF 实现 Kubernetes 网络可观测性?实战指南
本文深入探讨了Kubernetes网络观测的挑战与eBPF技术的应用。首先分析了传统工具在数据碎片化、上下文缺失和性能瓶颈上的局限性,接着阐述了eBPF通过零拷贝观测、全链路关联和动态过滤等特性带来的优势。文章进一步解析了eBPF观测架构的设计与实现,包括关键数据结构、内核探针部署及生产环境拓扑。实战部分展示了如何构建全栈观测系统,并结合NetworkPolicy验证、跨节点流量分析等高级场景,提供具体代码示例。最后,通过典型案例分析和性能数据对比,验证了eBPF方案的有效性,并展望了未来演进方向,如智能诊断系统与Wasm集成。
|
9月前
|
人工智能 弹性计算 运维
ACK Edge与IDC:高效容器网络通信新突破
本文介绍如何基于ACK Edge以及高效的容器网络插件管理IDC进行容器化。
|
4月前
|
安全 网络安全 定位技术
VPN虚拟专用网络
VPN(虚拟专用网络)通过公共网络创建安全加密的专用连接,保护数据传输。其核心是建立加密隧道,常用协议包括OpenVPN和IPsec。主要应用涵盖企业远程办公、隐私保护及绕过网络限制。优点为高安全性、灵活性强和成本低,但也存在速度影响、配置复杂及潜在安全漏洞等问题。总体而言,VPN在现代网络中具有重要价值,且随着技术进步持续优化。
1273 16
|
6月前
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
200 12
|
9月前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
274 2
|
10月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
658 3
|
10月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
1024 2
|
11月前
|
Kubernetes 网络协议 网络安全
k8s中网络连接问题
【10月更文挑战第3天】
640 7
|
11月前
|
Kubernetes 应用服务中间件 nginx
搭建Kubernetes v1.31.1服务器集群,采用Calico网络技术
在阿里云服务器上部署k8s集群,一、3台k8s服务器,1个Master节点,2个工作节点,采用Calico网络技术。二、部署nginx服务到k8s集群,并验证nginx服务运行状态。
2933 2
|
9月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
208 17

热门文章

最新文章

推荐镜像

更多