比如我有 ssh 服务,内网是 10.0.0.1:22,通过域名 example.com 访问。 我希望在外网的时候 也可以通过域名 example.com 访问到。 路由器自己解析是可以的,但是外网访问端口和内网端口必须保持一致,有点麻烦,有什么好的类似 PAC 的本地全局代理吗?
1
dcty 2021-10-15 17:19:09 +08:00
如果你用的是 Mac,那么用 surge 可以解决。dns 解析可以用脚本实现,判断当前网络来返回域名对应的 IP 。
|
2
wweir 2021-10-15 18:11:15 +08:00 3
写个 hosts 文件不好么
|
3
IvanLi127 2021-10-15 18:41:46 +08:00 via Android
只要你有公网 ip 端口没被阻断,好像只要网关把所有端口转发给你的内网服务就好了?内网再开个 dns 服务,网关再设其为默认 dns 服务器,应该能满足吧?
|
4
starsky007 2021-10-15 18:57:26 +08:00 via Android
Tailscale
|
5
z7356995 2021-10-15 19:09:04 +08:00 via Android
ipv6 内外网都一样
|
6
cweijan 2021-10-15 19:36:33 +08:00
就是异地组网嘛, 想快速体验可以用国产的蒲公英, 其他免费的有 Tailscale 、zerotier, 自建则可用 WireGuard
|
7
devliu1 OP @dcty 我觉得是正解,能完美解决需求,我要的应该是 programmable 全局代理工具
@wweir hosts 与我自建 dns 没区别呀 @IvanLi127 问题就是公网被阻断了,(所以端口不够用,这才是主要问题!!!)不然网关侧就可以解决这个问题。 @starsky007 这个看着是类似 zerotier 的服务吗?我研究一下 @z7356995 学习了,但是公网没有 v6 |
9
Xusually 2021-10-15 23:31:28 +08:00 via iPhone
Surge
|
10
mMartin 2021-10-16 10:56:31 +08:00
软路由可以设置 dns 代理 比如爱快的 dns 反向代理功能
|
11
cache 2021-10-16 11:57:35 +08:00
@devliu1 Tailscale 就是你要的自动适应网络环境的 VPN,内网时直连,外网如果打洞成功也能直连,否则走中转。
缺点是 Tailscale 的服务器在国外,中转会很慢。 你如果只是端口不够,其实还有一个简单的解决方案:直接复用已经映射好的端口,如 443. 你要编程实现的话,每条新来的连接检测一下第一个包的起始几个字节,如果是 ssh 转内网的 ssh 服务器,如果是 tls 包,转原来的 https 服务。 |
12
devliu1 OP |
13
devliu1 OP 好像最方便的方式还是多买一个公网 IP 。
每个服务占用一个 IP 的固定端口,在本地 DNS 把公网域名解析到本地。 如果是 https 还可以通过 host 转发给不同的服务。 |
14
zhfish 2021-10-16 22:03:12 +08:00
这么麻烦? 内网上一个软路由,dns 里面 10.0.0.1 example.com 不就行了。。
连上内网走路由 dns, 外网走公网 dns |
15
zhfish 2021-10-16 22:04:11 +08:00
端口一致为什么麻烦,这个没太理解
|
16
devliu1 OP @zhfish 举个反例,内网两个 ssh 192.168.1.1:22 、192.168.1.2:22 。但只有一个公网 ip,可以映射 1.1.1.1:22 -> 192.168.1.1:22,但是要映射 192.168.1.2:22 的时候,端口不够了,本质还是公网 ip 少了。
|
17
orancho 2021-10-17 16:13:02 +08:00
你要找的是不是 MAAS 或者 ActiveDirectory 的 DNS ?
|
18
FakNoCNName 2021-10-18 10:29:39 +08:00
你这个需求弄个跳板机最简单,路由器 22 断口映射到跳板机上,其它的全部通过跳板机转发
|
19
yhan 2021-10-18 13:46:10 +08:00
试试 proxifier
|
20
devliu1 OP |
21
FakNoCNName 2021-10-18 20:37:41 +08:00 1
@devliu1 只要路由能通,跳板机会自己转发,只要配置对了就可以,你看下 ssh 跳板机的资料,里面有这种用法。
|