将 DNS 解析为内部 IP 地址?

将 DNS 解析为内部 IP 地址?

我想通过内部 DNS 从几台内部机器向外部客户端提供服务。

这是来自家庭的单个外部 IP 地址,在消费者级路由器上,我希望从网络内部的机器提供内部路由。

目前,我已让机器解析其他内部客户端,前提是它们的名称服务器列表中有内部 DNS。

但是,如果我尝试解析这些名称/使用来自外部客户端的服务,它们只会解析到网关/ DNS 框,我需要内部机器来解析。

端口转发没有帮助,因为我有多个提供类似服务的盒子(ssh,http / https,邮件等)

该图表可能有助于解释设置以及我想要做的事情......(或它的名字;))

任何帮助将非常感激。

最后,我只需要使用反向代理来执行此操作吗?

网络

答案1

问题不是 DNS,问题在于 IP。

如果您需要外部访问,则需要外部可访问的 IP。对于一台机器,端口转发即可解决问题。对于多台机器,您可以将一台机器上的端口 22 转发到路由器上的端口 22,将另一台机器的端口 22 转发到路由器上的端口 122。您将通过 ssh 连接到 example.com:122。

如果无法明确指定端口,对于 http/https 协议,反向代理就可以了;对于邮件,单台机器就足够了。对于 ssh 和大多数其他协议,唯一的方法是拥有多个公共 IP

答案2

因此,我决定添加我自己的答案,因为给出的答案并没有真正明确地回答这个问题。

我使用 Nginx 设置了一个反向代理,可以根据内部 DNS 解析名称。这涵盖了 Web 服务(您可以添加更多监听端口,例如用于访问 Web 管理员或邮件服务。(我只有一个邮件服务器,这很典型,因此它只是端口转发,不需要代理)

server {
    listen       80;

    server_name  a.example.com b.example.com c.example.com;
    access_log   /var/log/nginx/proxy.access.log;

    location / {            
        resolver          192.168.1.102; # Local DNS resolution
        proxy_pass        http://$host$uri; # wildcard 
        proxy_redirect    off;
        proxy_set_header  Host            $host;
        proxy_set_header  X-Real-IP       $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

为了处理 ssh,我决定只使用端口转发,但是可以配置 sshd 通过隧道进行反向代理,这个答案有一些细节:

https://serverfault.com/a/244409/56132

相关内容