Два разных сетевых интерфейса одновременно CentOS
Я схожу с ума, так как я пытаюсь решить эту проблему в течение почти недели.
Сценарий: один сервер с двумя разными сетевыми устройствами. Каждое устройство подключено к отдельной подсети компании.
eth0
подключен x.y.5.184/29
, в то время как eth1
подключен к x.y.88.224/27
, Я хочу, чтобы сервер прослушивал оба устройства.
Сервер-IP в .5.184/29
должен быть x.y.5.186
Сервер-IP в .88.224/27
должен быть x.y.88.253
, Я хотел бы запустить две разные виртуальные машины с Apache, поэтому сервер должен - с natpf для соответствующей виртуальной машины - прослушивать x.y.5.186:p1
для VM1 и дальше x.y.88.253:p2
для VM2
x
а также y
должны быть скрыты из-за проблем конфиденциальности, но им даны значения.
Так вот в чем проблема: если я подхожу eth1
сервер не отвечает на eth0
и я не знаю почему.
Вот вывод с обоими устройствами:
[user@server ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.5.186 netmask 255.255.255.248 broadcast x.y.5.191
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77141 bytes 50779367 (48.4 MiB)
RX errors 27 dropped 0 overruns 26 frame 1
TX packets 83841 bytes 63781133 (60.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet x.y.88.253 netmask 255.255.255.224 broadcast x.y.88.255
ether <MAC> txqueuelen 1000 (Ethernet)
RX packets 77911 bytes 6285521 (5.9 MiB)
RX errors 0 dropped 836 overruns 0 frame 0
TX packets 6502 bytes 1057860 (1.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 740 bytes 606784 (592.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 740 bytes 606784 (592.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:67:e6:77 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user@server ~]$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 x.y.5.185 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 x.y.88.225 0.0.0.0 UG 10 0 0 eth1
x.y.5.184 0.0.0.0 255.255.255.248 U 0 0 0 eth0
x.y.88.224 0.0.0.0 255.255.255.224 U 10 0 0 eth1
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
# ifcfg-eth0
HWADDR=<MAC>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=0
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=SERVER
UUID=<uuid>
DEVICE=eth0
ONBOOT=yes
IPADDR=x.y.5.186
PREFIX=29
GATEWAY=x.y.5.185
[user@server ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth1
# ifcfg-eth1
HWADDR=<MAC2>
TYPE=Ethernet
BOOTPROTO=none
#DNS1=x.y.company.dns
DEFROUTE=no
IPV4_FAILURE_FATAL=yes
IPV4_ROUTE_METRIC=10
IPV6INIT=no
IPV6_AUTOCONF=no
IPV6_DEFROUTE=no
IPV6_FAILURE_FATAL=no
NAME=CLIENT
UUID=<uuid2>
DEVICE=eth1
ONBOOT=no
IPADDR=x.y.88.253
PREFIX=27
GATEWAY=x.y.88.225
Поэтому я думаю, что это может быть маршрут. я удалил /etc/sysconfig/network-scripts/route-eth0
а также route-eth1
так что это по умолчанию.
[user@server ~]$ ip route
default via x.y.5.185 dev eth0 proto static
default via x.y.88.225 dev eth1 proto static metric 10
x.y.5.184/29 dev eth0 proto kernel scope link src x.y.5.186
x.y.88.224/27 dev eth1 proto kernel scope link src x.y.88.253 metric 1
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
Я удалил маршрут по умолчанию для eth1
[root@server user]# ip route del default via x.y.88.225 dev eth1 prot
И все равно ничего не меняется. Пинг до eth0
IP не работает, но если я удаляю другой маршрут с
[root@server user]# ip route del x.y.88.224/27 dev eth1 proto kernel ric 10
eth0
работает снова, каждое соединение с x.y.5.186
снова работает, но eth1
перестает работать. Насколько я знаю показатель, который я использовал на eth1
должен решить проблему, но это не так. Любой специалист по маршрутизации с мыслью об этом?
Редактировать: свежий CentOS
1 ответ
Этот вопрос задавался здесь миллион раз.
Это невозможно сделать, так как вы пытаетесь это сделать, вам понадобится политика маршрутизации. Вы можете найти краткое введение в это здесь.
Вы должны будете указать, как правило ip, которое определяет, какая из двух таблиц маршрутизации должна быть применена, та, которая указывает, что, если пакет приходит с IP-адреса VM1, тогда используйте таблицу 1, в противном случае используйте таблицу 2. Это почему она иногда называется маршрутизацией источника, а не политикой маршрутизации: потому что таблица должна применяться, выбирается на основе IP-адреса источника, а не адреса назначения.