有人可以帮我在一台服务器的两个网卡上分配一个静态 IP 吗?
网卡 1:10.110.180.110 | 255.255.255.0 | 10.110.180.1 网卡 2:10.124.11.60 | | 255.255.255.0
我使用的是 Windows Server 2008 R2,两个 IP 都需要可访问
能否逐步了解如何使用命令执行此操作?是通过 netsh 吗?
答案1
通过 netsh 分配 IP:
netsh interface ipv4 add address
举个例子:
netsh interface ipv4 add address “NIC1” 10.110.180.110 255.255.255.0
要分配额外的 IP,只需输入带有新参数的相同命令。
还有一种方法可以一次添加多个 IP 地址。我猜你可能会对此感兴趣:
FOR /L %variable IN (start,step,end) DO command
答案2
因此分配 IP 应该不难,其他答案中已经介绍过了。但是,要求两个 IP 都可以访问是一个棘手的问题。
多宿主服务器的工作原理 - 子网中有一个 NIC 具有默认网关,其他 NIC 则没有网关。让我们通过示例来说明:
+--------+
| router |
+--+-----+ +----------+
| 10.0.0.254 | |
This subnet has default gateway | Server 2 |
| 10.0.0.1/24 | 10.0.1.2/24
+-----+------+ +---+------+
| | |
| Server +------------------------+-------++
| 1 |10.0.1.1/24 |
| | |
+------------+ | 10.0.1.254
+-------+---------+
| router |
+------+----------+
| 10.0.3.254
|
|
| 10.0.3.1/24
+-----+---------+
| |
| Server 3 |
| |
+---------------+
我们有 3 个子网:
子网 1:10.0.0.0/24
子网 2:10.0.1.0/24
子网 3:10.0.3.0/24
服务器 1 是多宿主服务器的示例,换句话说,它就是您要找的服务器。
它的 NIC 1 位于子网 1 中,并且该 NIC 的网关 IP 设置为 10.0.0.254,
它的第二个 NIC 位于子网 2 中。
现在这意味着:
如果服务器 1 想要联系服务器 2 - 它将选择 NIC 2,因为它是直接连接的网络并且具有最高的路由优先级。换句话说,服务器 2 的 IP 地址与服务器 1 的 NIC2 位于同一子网中。
但是,如果服务器 1 想要联系服务器 3 - 没有专门为其设置的路由,并且它不在直接连接的网络上。因此将选择默认网关 10.0.0.254。
如果服务器 3 想要与服务器 1 NIC1 10.0.0.1 通信,则同样适用。服务器 3 将使用它自己的默认网关。
但是,如果服务器 3 想要与 NIC 2 的 IP - 10.0.1.1 通信 - 则行不通。流量模式将按照以下方式进行:
服务器 3 -> 10.0.3.254 -> 10.0.1.254 -> 10.0.1.1 因此数据包到达服务器 1 NIC 2。但接下来会发生什么将是一个问题。
服务器 1 在 NIC2 上接收来自服务器 3 的数据包 - 但是现在需要进行路由决策。如何发送回复?
子网 10.0.3.0/24 没有专门设置的路由。因此,服务器 1 将选择通过其默认网关和 NIC1 进行回复。
这些数据包将到达服务器 3 - 但是由于源地址不匹配,因此无法建立 TCP 通信。
10.0.3.1+----------> 10.0.1.1
^ 10.0.0.1
| +
+---------------------+
在 Linux 世界中,有一种解决方案虽然很少使用,但却存在。它被称为“策略路由”。简而言之,它允许根据收到的 NIC 流量来设置路由决策。
对于上面的例子,它将是这样的:
如果服务器 1 在 NIC2 上接收流量 - 不使用默认网关,而是通过子网 2 的网关发送回复。
我不知道 Windows 世界中有这样的类似物。
所以据我所知 - 设置为两个 IP 都可以从远程主机访问是不可能的。
您可以通过在服务器 1 上引入静态路由,将服务器 3 通过服务器 1 NIC2 IP 访问服务器 1,但这样您将无法从服务器 3 NIC1 访问服务器 1。