有没有基于 http 的内网穿透技术?

2022-09-21 08:12:37 +08:00
 xubingok

公司的互联网访问策略异常的严格(据说用的深信服),之前还能用 nps 的.某次升级后就连不上了. 从内网 ping 外网没问题,上网也没问题,但是各种指定端口的 tcp 都连不上.ssh 也无法使用. 感觉从内向外只放开了 80 和 443 端口?

这种情况下,还能实现内网穿透么?

4257 次点击
所在节点    问与答
39 条回复
xubingok
2022-09-21 09:49:30 +08:00
@cutepig 谢谢.我先瞧瞧.
dogking2
2022-09-21 10:06:14 +08:00
luny
2022-09-21 10:28:39 +08:00
不建议折腾了,这是挑战公司红线的做法,后果比较严重
exqibao
2022-09-21 11:09:34 +08:00
如果没理解错的话,是公司向外访问,目标端口只允许 80 或 443 。

1.内网电脑搭 shadowsocks 服务的,端口 12345 ;
2.内网电脑起 frp 客户端,通过公网 vps ,把公网 443 端口转到内网 12345 端口;
3.公司电脑使用 shadowsocks 客户端,连接公网 443 端口,建立本地 socks5 代理,端口 1080 ;

之后,所有服务都通过本地 1080 端口代理访问,如果部分软件不支持设置代理,可以先使用 nadoo/glider 工具打洞,glider -listen tcp://:22 -forward socks5://localhost:1080,tcp://内网 ip:22 。

也可以不用 shadowsocks 之类的,直接内网建 socks5 代理服务,暴露到公网 443 端口上,只是不太安全。

如果有 https 协议分析的话,把 shadowsocks 服务换成 trojan 的。
weixind
2022-09-21 11:31:34 +08:00
建议换公司。不要干公司严令禁止的事。没必要。
Seanfuck
2022-09-21 12:09:35 +08:00
可以自己开发一个
EIJAM
2022-09-21 12:19:17 +08:00
云桌面一般不是都提供了互联网接入么,完全可以在自己的笔记本上开云桌面(笔记本走手机热点),剪贴板是共享的。
ysc3839
2022-09-21 12:43:25 +08:00
标准的 http 不行,因为发送请求后只能单向接收,http proxy connect 可以。
phiysng
2022-09-21 12:56:23 +08:00
楼上 HTTP CONNECT 正解,可以用七层协议传输 4 层的 TCP 数据
systemcall
2022-09-21 12:57:08 +08:00
开一个 trojan vmess vless 之类的,配置好伪装,只要没有 mitm 就基本上没法检测
要是公司会通过自签证书解密 HTTPS 流量,那什么伪装都是白瞎了,因为肯定还有别的监控
recall704
2022-09-21 13:05:23 +08:00
gost ?
mikewang
2022-09-22 02:07:11 +08:00
首先,建议遵守安全规定。
不过针对问题回答,可以 ping 通,就可以使用 icmp 隧道。使用 HTTP 的 Neo-reGeorg 也可以,不过个人觉得效率不是很高。十多年前的 GoAgent 也是基于 HTTP 的,那个时候还使用的是自签名证书。通过隧道后再 FRP 。
xubingok
2022-09-23 09:19:43 +08:00
@exqibao 感谢回复.大概看懂了.就是用 443 端口拿给之前的 frp/nps 之类的用.毕竟内网机器不会连 443 都封.我先试试吧,再次感谢.
xubingok
2022-09-23 09:22:44 +08:00
@EIJAM 剪贴板共享也没啥用啊.之前还可以从笔记本向云桌面复制简单文本..某次更新后,剪贴板都不能共享了.
gujigujij
2022-09-27 18:17:32 +08:00
刚写完,基于 websocket 的,github: aHR0cHM6Ly9naXRodWIuY29tL3NhemltYS9uYXRfdHJhdmVyc2Fs
xubingok
2022-09-28 10:50:32 +08:00
@gujigujij 卧槽.大佬感谢啊.我也想着实在不行用 socket 搞一个算了,公司总不能连 socket 都屏蔽吧.
只是 http 相关知识我是一片盲区,没想到大佬已经整出来了.
我这就去试试,感谢大佬~
xubingok
2022-09-30 16:24:20 +08:00
@gujigujij 已试用.技术上是可行的.ws 超时时间 3s 还是短了点.用于实践的话还有些问题:
1.内网 https 的页面好像配置上去不行,不知道 config 文件是否支持域名.
2.用着用着 ws 就断了,可能需要一些重连机制.

技术可行,继续寻求方案的动力又有了哈哈
gujigujij
2022-09-30 19:00:22 +08:00
@xubingok 域名和 https 配置类似这样. 公网 https 测过, 内网没有测试.

```
{
"server": {
"port": 11111,
"host": "t.xxxx.coxm",
"https": true,
"password": "helloworld",
"path": "/websocket_path"
},
"client": [
{
"name": "ssh",
"remote_port": 1222,
"local_port": 22,
"local_ip": "127.0.0.1"
} ]
}

```

重连不知道稳不稳定, 刚开始写后来又 push 了好几次代码, 我需要再测测.
xubingok
2022-10-12 09:36:22 +08:00
@gujigujij 再次感谢.目前已经全部搞定了.唯一的那个 issue 是我提的哈哈.虽说是个小问题,大佬还是很用心的优化了~

整体方案就是:
1.用大佬的工具,websocket 怼上去,把本机 ssh 端口映射到外网.
2.在外网机器用 ssh -D 做动态转发,就拥有了一个 socks5 代理.
3.然后就可以愉快的玩耍了.

很奇怪的是,这种方式居然没有被防火墙拦截...(希望不要被我司 IT 看到..)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/881734

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX