最初,我们可以通过办公网或者外网+VPN 方式直接访问服务器内网的 HTTP 服务(例如一些运维组件的管理页面),但是现在由于网络做了一些变动,我们只能通过 DMZ 区代理去访问服务器内网。所以我们在 DMZ 区搭建了一套 NGINX,反向代理后面的 HTTP 服务,由于后面代理的服务非常多,而且有一些完全相同 url 的服务需要代理,因此我们想通过虚拟主机+域名的方式管理被代理的服务,比如 vsa.local.v1.net 代理了 172.101.110.1:8181/,vsb.local.v1.net 代理了 172.101.110.2:8180/等这种方式去区分服务。因此需要我们通过域名去访问 NGINX,但是我们并没有自己的内部 DNS (这个说来话长,不解释了)。 目前,有两种方案可选: 方案一:个人电脑上装个本地的 DNS,将*.local.v1.net 指向 DMZ 的代理 NGINX,好处是成本低,相对安全,缺点是需要每个人都装个私有 dns,有点麻烦; 方案二:在外网服务器上(华为云等)搭建一个私有 DNS 指向 DMZ 的代理 NGINX,然后个人电脑的 dns 配上这个外网服务器 ip,好处是对客户端影响小,坏处自然是花钱和相对没有方案一安全。
下面是两个方案的网络拓扑图。请问大家选哪个方案好呢?或者有什么更好的方案?
方案一:
方案二:
1
XiLingHost 2021-05-20 14:32:17 +08:00
直接买个域名,然后做 wildcard 解析,比如配置一条记录
*.local.com. 1 IN A 192.168.1.100 然后在 192.168.1.100 上部署你这个 nginx 作为反向代理 |
2
zhoudaiyu OP @XiLingHost #1 那这样访问不通我们的内网啊,必须通过 dmz 区的代理才能访问进内网的
|
3
XiLingHost 2021-05-20 15:08:09 +08:00
@zhoudaiyu 你的意思是,你的客户端设备是无法访问公有 dns 服务器的?
|
4
goodryb 2021-05-20 15:09:43 +08:00
搞个专门的运维系统的域名最简单,直接主域名解析到 DMZ 区的 nginx IP 上即可,这样客户端就不用什么特殊配置。
|
5
zhoudaiyu OP @XiLingHost #3 是可以的,但是代理必须在我们的 dmz 部署,这样才能访问进内网
|
7
XiLingHost 2021-05-20 15:14:35 +08:00
@zhoudaiyu 代理当然是部署在 dmz 的,我说的那个 ip 只是个示例,实际上你也可以是 10.0.0.0/8 或者 192.168.0.0/24 或者 172.16.0.0/12 里面的任何地址,当然,你也可以把它指定为你们的公网地址,我的意思是,直接买一个域名来解析到你的代理服务器上
|
8
zhoudaiyu OP @XiLingHost #7 明白了,就是买个域名加个 A 记录指向 dmz 的 nginx 代理就行了,这样外面不配 dns 也能访问到 dmz,然后 nginx 那块或者前面的 lb 直接做个访问白名单就可以了吧
|
9
XiLingHost 2021-05-20 17:08:41 +08:00
@zhoudaiyu 是的,配置了 wildcard 记录(也就是含有*的通配符记录)后,符合规则的 dns 查询都会返回记录的结果
|
10
ik 2021-05-20 19:40:21 +08:00 via iPhone
dns 不能自建,可以写 hosts 文件。
如果用户比较多维护 hosts 麻烦可以开一个 http 正向代理, 流量走 http 代理,在 http 代理节点写 hosts 文件就行。 |
11
ik 2021-05-20 19:42:17 +08:00 via iPhone
另外购买域名设置解析地址就行,没看懂你的顾虑是什么
|
12
kav2007 2021-05-20 20:38:20 +08:00 via Android
在 dmz 里架设正向代理,正向代理上写 hosts 或者搭建 dns 。客户机浏览器设置 pac 代理
|
13
sdc6882278 2021-05-21 13:26:59 +08:00
1.大部分商用 VPN 系统都带有 dns 劫持功能可以自定义 host 。
2.可以使用 ip 地址加 url 的形式区分反向代理的服务,比如 1.1.1.1/server1/xxxx,1.1.1.1/server2/yyyyy 。 |