我现在有个问题,如下图:
我有一个服务运行在host A上,只有通过L2TP vpn连接到这个host的电脑,才可以访问这个电脑的7860 端口的服务。
有没有这个这样的docker或者软件,安装在B上,然后通过vpn和host A建立链接,然后自己又能把端口对外开放出来?
我现在有个问题,如下图:
我有一个服务运行在host A上,只有通过L2TP vpn连接到这个host的电脑,才可以访问这个电脑的7860 端口的服务。
有没有这个这样的docker或者软件,安装在B上,然后通过vpn和host A建立链接,然后自己又能把端口对外开放出来?
简单处理能用ssh的隧道功能
ssh 隧道 +1
隧道,
转发,
穿透,
打洞
关键字,自行搜吧,不推荐具体的了。
这个端口的web服务其实就是stable diffusion webui, 简单 处理吗?
可以,你不要想怎么用Docker,你就想实际中怎么配置一台B就行,Docker只不过把原先的配置放容器里了
场景
现有:服务器A,服务器B,服务器C,
服务器A->服务器B: 可以通过ssh连接
服务器A->服务器C: 不可直连
服务器B->服务器C: 可直连
目标:A服务器通过服务器B来间接访问到服务器C上的应用
在B服务器上执行以下命令
ssh -fgNL {B服务器转发端口}:{C服务器IP地址}:{C服务器数据库服务端口} {B服务器ip地址}
示例
ssh -fgNL 39120:192.168.18.34:39120 127.0.0.1
参数说明
-f 后台运行
-g 所有ip请求的流量都进行转发
-N 只开启隧道,不开启ssh登录通道
-L 进行本地转发
关闭隧道
# 查找开启的进程
ps aux | grep '{B服务器转发端口}:{C服务器IP地址}:{C服务器数据库服务端口} {B服务器ip地址}'
# 杀进程 如果进程号是1234
kill 1234
示例
[root@k8s-node-1 ~]# ps aux | grep 'ssh -fgNL 39120:192.168.18.34:39120 127.0.0.1'
root 8412 0.0 0.0 78812 1148 ? Ss 14:23 0:00 ssh -fgNL 39120:192.168.18.34:39120 127.0.0.1
root 8504 0.0 0.0 112668 948 pts/2 S+ 14:23 0:00 grep --color=auto ssh -fgNL 39120:192.168.18.34:39120 127.0.0.1
[root@k8s-node-1 ~]# kill 8412
b上安装socat,转发端口到 a 就行。
具体可以问 chatGPT
碰上大佬了,谢谢大佬
谢谢佬
不用再docker里面,我目前的思路就是B vpn建立信道,然后B上做路由表转发?
frp应该可以
我的意思是你先考虑一下如果不使用Docker,你要怎么配置B。用Docker的话,就是把这个过程移到配置Docker镜像里而已
嗯啊,明白了,谢谢佬
frp 只是转发吧,自身不带vpn协议,最好一个软件有这两个功能
自建tailscale中续服务?这样你三个电脑都在一个虚拟局域网里面了
有很多这样的教程
我去学学,佬
VPN 只有建立通道没有暴露端口能力,可以配合2个vpn实现。或者使用 ssh 或者 socks5 转发(需要在 3 台机子上都安装),在 B 机子上连接 A 端口并暴露端口给 PC 使用。
试试:
将此文件保存为 docker-compose.yaml
然后同目录执行: docker compose up -d
version: '3'
networks:
vpn-network: # The bridge network we created earlier
external: true # Tells docker that the network is pre-existing
name: vpn-network
services:
l2tp-vpn-client:
image: r0hm1/l2tp-vpn-client:latest
container_name: l2tp-vpn-client
privileged: true
cap_add:
- NET_ADMIN
networks:
- vpn-network # The bridge network we created earlier
ports: # Open every needed port to access web interfaces
- 7860:7860
volumes:
- /lib/modules:/lib/modules:ro
environment:
- VPN_SERVER_IPV4=IP # 替换为 L2TP 服务器 IP
- VPN_PSK=
- VPN_USERNAME=
- VPN_PASSWORD=
- TZ=Aisa/Shanghai
- LAN=192.168.1.0/24 #替换为 L2TP 网段
restart: unless-stopped
services:
socat_proxy:
image: alpine/socat
command: socat TCP-LISTEN:7860,fork TCP:IP:7860 #替换为机器 A 的 VPN IP
network_mode: container:l2tp-vpn-client
然后 PC 可访问 B:7860 等效于 访问 A:7860
这么强的吗大佬,真心感谢,直接提供了配置文件