尝试在 Ubuntu12 下设置多宿主,但只能获取 2 个 IP 中的 1 个来接受请求

尝试在 Ubuntu12 下设置多宿主,但只能获取 2 个 IP 中的 1 个来接受请求

我在运行 VMware(我相信是 VSphere)的虚拟机中创建的一些新服务器上遇到了问题,这些服务器使用的是 Ubuntu 12。这是在 ISP 上,而不是我的桌面上。我认为我们的旧数据中心也存在同样的问题,但从未真正找到解决方法。我们只是停止使用多宿主,只使用其中一个 IP 地址(我们希望一个在 DMZ 中,另一个仅在内部)。我们希望数据库仅在 INT 子网上可用

问题(简短版本):尝试在 Ubuntu 下配置多宿主,但只能让一个 IP 响应。

更长的版本 - 我们希望有两个网络,一个是 DMZ,可以访问外部互联网,另一个是 INT,它是内部网络,只能访问我们数据中心内的其他服务器。我可以定义它们,使它们在 ifconfig、netstat -nr 和 IP route show 中正确显示,但如果我尝试访问服务器上的服务,我只能让其中一个或另一个响应,另一个会超时。哪个响应在重新启动之间保持一致。

从我读过的所有内容来看,我们对事物的定义都是正确的,但也许我们遗漏了一些东西,或者由于我们在 VMware 下,所以还有一些特殊的事情需要做。

如果我尝试 SSH 或 PING 进入 DMZ 地址,它会正常工作。如果我尝试 INT 地址,它会超时。没有迹象表明它被 iptables 阻止,也没有日志中的任何其他相关错误消息。

如果我单独尝试,它们都会成功。只有当我尝试多宿主时,访问才会失败

背景:

VMware 下的 Ubuntu 12.04 LTS

名称已更改但保持一致。A 和 B 是不同的数字,并一致替换。其他的与我们配置中的相同。

Local server name mapping
DMZ_001     10.A.B.64/26
INT_002     10.A.B.128/27

DMZ - 10.A.B.71 (eth0)
INT - 10.A.B.140 (eth1)

下面是 ifconfig、netstat -nr、ip route show 和接口文件。如果有其他信息可以提供帮助,请告诉我。

=====================

username@servername:~$ cat /etc/network/interfaces
iface lo inet loopback
auto lo

#DMZ
auto eth0
iface eth0 inet static
address 10.A.B.71
netmask 255.255.255.192
gateway 10.A.B.65
#up route add default gw 10.A.B.65
dns-nameservers 8.8.8.8 8.8.4.4

# INT
auto eth1
iface eth1 inet static
  address 10.A.B.140
  netmask 255.255.255.224
  gateway 10.A.B.129
#up route add default gw 10.A.B.129
  dns-nameservers 8.8.8.8 8.8.4.4
  dns-search thinaire.net

================================

username@servername:~$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.A.B.65    0.0.0.0         UG        0 0          0 eth0
10.A.B.64    0.0.0.0         255.255.255.192 U         0 0          0 eth0
10.A.B.128   0.0.0.0         255.255.255.224 U         0 0          0 eth1

================================

username@servername:~$ ip route show
default via 10.A.B.65 dev eth0  metric 100
10.A.B.64/26 dev eth0  proto kernel  scope link  src 10.A.B.71
10.A.B.128/27 dev eth1  proto kernel  scope link  src 10.A.B.140
username@servername:~$

============================

username@servername:~$ ifconfig
eth0      Link encap:Ethernet  HWaddr 00:50:56:ac:5e:1b
          inet addr:10.A.B.71  Bcast:10.A.B.127  Mask:255.255.255.192
          inet6 addr: fe80::250:56ff:feac:5e1b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26089 errors:0 dropped:9 overruns:0 frame:0
          TX packets:18282 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3784760 (3.7 MB)  TX bytes:2359060 (2.3 MB)

eth1      Link encap:Ethernet  HWaddr 00:50:56:ac:06:44
          inet addr:10.A.B.140  Bcast:10.A.B.159  Mask:255.255.255.224
          inet6 addr: fe80::250:56ff:feac:644/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4437 errors:0 dropped:8 overruns:0 frame:0
          TX packets:726 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:295739 (295.7 KB)  TX bytes:74047 (74.0 KB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

答案1

在 Linux 中配置的每个路由表不能有多个默认网关这边走

要拥有多个默认网关,您需要为每个源 IP 配置单独的路由表。

类似这样的:

ip 路由通过 10.AB65 src 10.AB71 表 1 添加默认

ip 路由添加 10.AB64/26 dev eth0 表 1

ip 路由添加 10.AB128/27 dev eth1 表 1

ip 规则从 10.AB71 查找 1 添加

对于第二个接口

ip 路由通过 10.AB129 src 10.AB140 表 2 添加默认

ip 路由添加 10.AB64/26 dev eth0 表 2

ip 路由添加 10.AB128/27 dev eth1 表 2

ip 规则从 10.AB140 查找 2 添加

您可能还想向这些路由表添加其他路由

要在 /etc/network/interfaces 中配置它,您可以将这些命令放入脚本中并调用up指令(请参阅man 5 interfaces

自动 eth0 iface eth0 inet 静态地址 10.AB71 网络掩码 255.255.255.192 网关 10.AB65 up /usr/local/bin/eth0-up.sh dns-nameservers 8.8.8.8 8.8.4.4

其中 eth0-up.sh 是包含以下内容的文件:

#!/bin/bash

ip route add default via 10.A.B.65 src 10.A.B.71 table 1

ip route add 10.A.B.64/26 dev eth0 table 1

ip route add 10.A.B.128/27 dev eth1 table 1

ip rule add from 10.A.B.71 lookup 1

重复同样的操作eth1

相关内容