networking - 网络系统帮助 : How to route an external request, 通过主机名到内部 ip?

标签 networking routing dns port

欢迎来到我关于堆栈溢出的第一个问题。

我环顾四周,我还没有发现这个问题。但是,这可能是因为我不知道如何提出我需要回答的问题。

信息:

我是一名程序员,离开了公共(public)部门,令人惊讶的是,管理良好的 IT 部门让所有这些废话都为我工作。我现在为一家需要一些网络系统帮助的私有(private)公司工作。

我们有:

  • 一个 SQL 服务器
  • 应用服务器
  • 文件服务器
  • 网络服务器
  • 多种网络服务
  • 团队基础服务器
  • 分享点服务
  • 5 个桌面

  • 都在我们的内部网络上。

    我们还有:
    - 没有域 Controller
    - 没有内部 DNS/NAT/DHCP 服务器。

    我们目前正在使用路由器进行 DHCP 和端口转发。我们今天分配了一个静态 IP。

    问题:

    为了将我们的外部域/子域指向我们的新静态 IP 并让这些请求(通过使用的主机名)路由到特定服务器,我需要设置什么?

    当前配置(端口转发)
    ourdomain.com:1234 -> router/port-forwarding -> SQL Server:1433
    ourdomain.com:1235 -> router/port-forwarding ->  Web Service 1:8081
    ourdomain.com:1236 -> router/port-forwarding ->  Web Service 2:8082
    ourdomain.com:1237 -> router/port-forwarding ->  Application Server:5410
    

    我想我想要什么:
    sql.ourdomain.com:80  -> ??? -> SQL Server:1433
    svc1.ourdomain.com:80 -> ??? -> Web Service 1:80 (host: svc1.ourdomain.com)
    svc2.ourdomain.com:80 -> ??? -> Web Service 2:80 (host: svc2.ourdomain.com)
    app.ourdomain.com:80  -> ??? -> Application Server:5410
    

    (host: xxx) 是我在 IIS 网站配置中指定主机的位置。

    在某些情况下,端口转发是必要的,但并非对每个实例都是理想的。我想记住有意义的名称,而不是任意的端口号。

    如果我在这里问的是完全荒谬的,那么,谢谢你的阅读。我只是在寻找一些方向。

    谢谢!

    <编辑>

    太平洋夏令时间 2012 年 4 月 19 日上午 12:01

    对不起,让我澄清一些事情。
  • 我们只有一个静态公共(public) IP 地址。
  • 假设我们可以获取/设置必要的硬件/软件来实现这一点。

  • 如果归根结底是我们需要购买一些企业级路由硬件,那就是它所需要的。我知道这必须是可能的,因为在我上一份工作中,我们有 40 或 50 个域都指向同一个 IP,一旦进入内部网络,它们就会路由到不同的服务器。 :/或者至少据我所知,这就是发生的事情。

    我今天实际上调用他们并问他们,但是设置这一切的主要家伙退出了。

    我真的在插入我们把垃圾放到云端,因为没有人愿意聘请网络工程师或系统分析师,更不用说建立数据中心了。

    最佳答案

    如果每个子域解析为不同的公共(public) IP 地址(例如,如果您的 DNS 配置为 sql.ourdomain.com 解析为 1.1.1.1 和 svc1.ourdomain.com 解析为 1.1.1.2),这是一种简单的方法。

    sql.ourdomain.com  IN A 1.1.1.1
    svc1.ourdomain.com IN A 1.1.1.2
    

    您的路由器只能根据 ip 数据包中包含的有限信息做出决定。通常,路由器可以查看 ip 或端口信息。在您的路由器配置了端口转发的情况下,路由器会查看端口号并使用该端口做出地址转换决策。
    rule: incoming port 1000, forward to 192.168.1.100:1433
    rule: incoming port 1001, forward to 192.168.1.101:80
    

    但是,如果端口相同,路由器需要其他信息来决定如何执行转换。大多数低端路由器(例如 Cisco ASA 系列、Juniper SRX 系列)可以使用 ip 做出此地址转换决策。缺点是您需要从您的 ISP 购买多个 IP 地址。
    rule: incoming ip 1.1.1.1, forward to 192.168.1.100:1443
    rule: incoming ip 1.1.1.2, forward to 192.168.1.101:80
    

    IIS 在网络堆栈的更高层上运行,可以通过查看 HTTP header 来做出这种区分。这适用于将单个 ip 和单个端口多路复用到多个网站。在这种情况下,由于 SQL 和您的 Web 服务器使用不同的协议(protocol),您将无法利用它。

    如果您的设备支持 IPsec 直通,您可能需要考虑的另一项技术是 IPsec 隧道 (VPN)。缺点是你的同事(我假设他们正在使用它)需要执行额外的配置。

    关于networking - 网络系统帮助 : How to route an external request, 通过主机名到内部 ip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10219597/

    相关文章:

    .net - 2 监听同一端口的进程 - .NET 不抛出异常

    php - 如何在 Symfony 2 中获取当前路线?

    angular - angular2/4 中的可枚举路由参数

    dns - Kubernetes Kubelet 说 DNS 没有设置 MissingClusterDNS (SkyDNS)

    c - 使用 epoll 停止单线程 C 服务器

    ios - Swift ios viewDidLoad 或 viewDidAppear

    android - Android手动开启3G连接,并保持开启

    php - CodeIgniter URL 路由不起作用

    ruby - 具有自定义 IP 的域上的 HTTP 请求

    wordpress - IIS 10 三个站点使用 header ,1 个有效,2 个超时