2

Я пытаюсь использовать статически назначенный адрес на одном интерфейсе (eth1) сервера и иметь назначенный dhcp адрес на другом интерфейсе (eth2) в той же подсети (172.17.11.0/24).

Когда я установил статический IP для eth1 (следуя указаниям, найденным на http://www.cyberciti.biz/faq/rhel-centos-fedoracore-linux-network-card-configuration), я ввел следующее в /etc/sysconfig/network-scripts/ifcfg-eth1:

# ServerEngines Corp. Emulex OneConnect 10Gb NIC (be3)
DEVICE=eth1
BOOTPROTO=static
DHCPCLASS=
HWADDR=00:21:5A:9B:00:41
IPADDR=172.17.11.203
NETMASK=255.255.255.0
#TYPE=ethernet
ONBOOT=yes

Если eth1 - единственный работающий адаптер, я не могу пропинговать ЛЮБОЙ внешний IP :(

Когда работает eth2, я могу пинговать внешние адреса.

ifconfig возвращает следующее:

eth1      Link encap:Ethernet  HWaddr 00:21:5A:9B:00:41
          inet addr:172.17.11.203  Bcast:172.17.11.255  Mask:255.255.255.0
          inet6 addr: fe80::221:5aff:fe9b:41/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4747 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5495 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:447100 (436.6 KiB)  TX bytes:1059019 (1.0 MiB)
          Memory:fbf60000-fbf80000

eth2      Link encap:Ethernet  HWaddr 00:21:5A:9B:00:42
          inet addr:172.17.11.245  Bcast:172.17.11.255  Mask:255.255.255.0
          inet6 addr: fe80::221:5aff:fe9b:42/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6745 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10802 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1260318 (1.2 MiB)  TX bytes:12302950 (11.7 MiB)
          Memory:fbe40000-fbe60000

Содержимое /etc/sysconfig/network:

HOSTNAME=<redacted>
NETWORKING=yes
NETWORKING_IPV6=no
GATEWAY=172.17.11.1

Я упускаю что-то супер очевидное? Если так, то, что это?

Редактировать по запросу с eth2

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth1
0.0.0.0         172.17.11.1     0.0.0.0         UG        0 0          0 eth1

и с обоими интерфейсами вверх:

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
172.17.11.0     0.0.0.0         255.255.255.0   U         0 0          0 eth2
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth2
0.0.0.0         172.17.11.1     0.0.0.0         UG        0 0          0 eth2

2 ответа2

1

Добавление строк NETWORK и BROADCAST в /etc/sysconfig/network-scripts/ifcfg-eth1 похоже, решило эту проблему.

DEVICE=eth1
BOOTPROTO=static
DHCPCLASS=
BROADCAST=172.17.11.255
HWADDR=00:21:5A:9B:00:41
IPADDR=172.17.11.203
NETMASK=255.255.255.0
TYPE=ethernet
NETWORK=172.17.11.0
ONBOOT=yes
GATEWAY=172.17.11.1
1

Linux использует сильную модель конечной системы для IP. Это означает, что IP-адреса «действительно» принадлежат машине, а не конкретным сетевым интерфейсам. Вместо множества сетевых интерфейсов со своими собственными адресами, которые просто случаются, все достигают одной и той же системы, Linux имеет одну машину с кучей IP-адресов, которая также имеет кучу сетевых интерфейсов.

Вы можете заставить его вести себя как модель системы слабого конца с такими вещами, как ARP-фильтрация, маршрутизация политик и так далее. Но это во многом зависит от того, что конкретно вы пытаетесь сделать. Вам следует обновить свой вопрос, объяснив, почему у вас есть два физических интерфейса в одной подсети и чего вы пытаетесь достичь, назначая IP-адреса различным физическим интерфейсам в одном и том же сегменте. Скорее всего, есть способ сделать это, но мы должны знать, что это значит, чтобы сказать вам, как.

Непонятно, почему ты не можешь выбраться с eth . Если ваш статический IP-адрес находится в пределах диапазона DHCP маршрутизатора, вы должны знать, что некоторые маршрутизаторы SoHo отказываются от трафика NAT с IP-адресов внутри своего диапазона DHCP, которые не назначены.

Но почему это важно, что происходит с eth1 ? Поскольку ваша конфигурация предназначена как для eth1 и для eth2 , почему вы обеспокоены тем, что происходит в другой конфигурации, отличной от той, которую вы используете?

Вы пытаетесь получить аварийное переключение? Если так, зачем связывать IP-адреса с физическими интерфейсами? Это просто означает, что потеря интерфейса означает потерю IP. Если вы хотите отработать отказоустойчивость, вам нужна мощная модель системы, в которой IP-адреса могут пережить потери физического интерфейса - в противном случае все TCP-соединения будут разорваны, даже если они могут быть сохранены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .