网络系统帮助:如何通过主机名将外部请求路由到内部IP?

时间:2012-04-18 23:30:18

标签: networking routing dns port

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

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

信息:

我是一名程序员,他离开了公共部门,拥有一个令人惊讶的,管理良好的IT部门,所有这些垃圾都为我工作。我现在为一家需要一些网络系统帮助的私营公司工作。

我们有:

  • SQL Server
  • 应用程序服务器
  • 文件服务器
  • Web服务器
    • 多个网络服务
    • 团队基础服务器
    • 分享点服务
  • 5个桌面

全部在我们的内部网络上。

我们还有:   - 没有域控制器   - 没有内部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网站配置中指定主机的地方。

在某些情况下,端口转发是必要的,但它并不适用于每个实例。我想记住有意义的名字,而不是任意的端口号。

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

谢谢!

<编辑>

PDT 4/19/2012上午12:01

抱歉,让我澄清一些事情。

  1. 我们只有一个静态公共IP地址。
  2. 假设我们可以获取/设置必要的硬件/软件来实现这一目标。
  3. 如果归结为我们需要购买一些企业级路由硬件,那就是它需要的东西。我知道这必须是可能的,因为在我上一份工作中,我们有40或50个域都指向同一个IP,一旦进入内部网络,就会路由到不同的服务器。 :/或者至少那是我所知道的最新情况。

    我实际上今天打电话给他们并问他们,但主要的人都放弃了。

    我真的在推动我们把我们的废话带到云端,因为没有人想聘请网络工程师或系统分析师,更不用说建立数据中心了。

    < /编辑>

1 个答案:

答案 0 :(得分:2)

如果每个子域解析为不同的公共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标头来实现这种差异化。这适用于将单个IP和单个端口多路复用到多个网站。在这种情况下,由于SQL和您的Web服务器使用不同的协议,因此您将无法利用它。

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