Назад | Перейти на главную страницу

Правильно настройте два интерфейса eth в разных подсетях

Может ли мне помочь кто-нибудь с большим опытом работы в Linux и сети? Я рыскал по Интернету в поисках четкого ответа на этот вопрос, и я даже сравнил ящик, к которому у меня есть доступ, с такой же настройкой, и я не могу заставить свой ящик работать.

Основная ситуация такова:

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

Коробка RHEL 6 Linux имеет два интерфейса Ethernet:

eth0 = 10.10.5.10/24
eth1 = 10.10.6.10/24

[root@box ~]# netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.10.5.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
10.10.6.0      0.0.0.0         255.255.255.0   U         0 0          0 eth1
0.0.0.0        10.10.5.254     0.0.0.0         UG        0 0          0 eth0

IP-переадресация включена и активна.

Эта проблема:

Клиенты в той же подсети, что и сеть eth1 или 10.10.6.x, могут пинговать и telnet к ресурсам, работающим на eth1 на этом устройстве.

Однако клиенты в любой другой подсети не могут. Так что со своей рабочей станции я могу пинговать и telnet к ресурсам на eth0 коробки в течение всего дня, но ничего на eth1 ... Что дает?

Сравнение этой установки с другим подобным блоком в моей среде не показывает заметных различий.

Вот несколько файлов:

# cat ifcfg-eth0
DEVICE="eth0"
BOOTPROTO="none"
HWADDR="Omitted"
IPADDR="10.10.5.10"
NETMASK="255.255.255.0"
NETWORK="10.10.5.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat ifcfg-eth1
DEVICE="eth1"
BOOTPROTO="none"
HWADDR="omitted"
IPADDR="10.10.6.10"
NETMASK="255.255.255.0"
NETWORK="10.10.6.0"
ONBOOT="yes"
TYPE="Ethernet"
USERCTL="no"

# cat route-eth0 
default via 10.10.5.254 dev eth0

# cat /etc/sysconfig/network
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=box
GATEWAY=10.10.5.254
NOZEROCONF=yes

Мы будем благодарны за любую помощь, которую вы можете оказать!

Спасибо.

Добавляем дополнительную информацию, но с краткостью:

# ip addr
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.5.10/24 brd 10.10.5.255 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    inet 10.10.6.10/24 brd 10.10.6.255 scope global eth1

с настройкой, как вы сейчас показываете:

  • у вас есть 2 стороны:

    • сторона eth1 (интерфейс 10.10.6.10, на 10.10.6.0/24 lan)
    • сторона eth0 (интерфейс 10.10.5.10, на 10.10.5.0/24 lan)
    • вы определили шлюз по умолчанию для этой машины на стороне eth0 (gw ip по умолчанию: 10.10.5.254)
  • следовательно

    • на стороне eth1:
      • [обязательно] любые машины в 10.10.6.0/24 должны иметь возможность взаимодействовать с 10.10.6.10 (а также друг с другом) (я предполагаю, что проблем с брандмауэром нет)
      • [реквизит] дополнительно: любая машина в 10.10.6.0/24, КОТОРАЯ ОПРЕДЕЛА своим шлюзом по умолчанию как «10.10.6.10», сможет отправлять пакеты на другие машины, проходя через вашу машину (10.10.6.10/24-> eth1 [ машина] eth0-> другие ланы). На самом деле вам не нужно использовать его в качестве шлюза по умолчанию, но для ЛЮБОЙ локальной сети на стороне eth0 им необходимо связать эту локальную сеть со шлюзом 10.10.6.10.
    • на стороне eth0:
      • [Requisite] любая машина на 10.10.5.0/24 должна видеть 10.10.5.10 (eth0) и может связываться с ней (и друг с другом).
      • [обязательный] любая машина в другой локальной сети должна иметь возможность связываться с eth0 через (возможно, дополнительные переходы) машину с IP-адресом 10.10.5.254 (например, если эта машина имеет 2 подсети, 10.10.5.254/24 на одной стороне как eth0 и 10.xyz/24 на другом интерфейсе, машина в 10.xy0 / 24 может отправлять пакеты на 10.10.5.10, имея маршрут: 10.10.5.0/24 со шлюзом 10.xyz).
      • если да, то им просто нужен дополнительный маршрут для достижения 10.10.6.0/24: 10.10.6.0/24 через шлюз 10.x.y.z

это может быть сложно выразить словами ...

что могло бы помочь: сообщите нам список сетей () и пути выхода каждой сети.

прямо сейчас я догадался, что вы пытаетесь иметь:

 [everything other machines (even internet, via the exterior internet gateway)]
                  |
                  |(links via switch(s) for 10.x.y.0/24 network, for example.
                  |   If you have such an additionnal LAN.
                  |   Maybe it's even "the Internet", and therefore not in 10.x anything,  
                  |   but this is just an example.)
                  |
                  |      
      (10.x.y.z?) |  [---------------]
   (or Internet?)ethZ[some router/box]ethW(10.10.5.254)
                     [---------------] |
                                       |
                                       |(links via switch(s) for 10.10.5.0/24 network)
                                       |
                             [-------] |
             (10.10.6.10)eth1[yourbox]eth0(10.10.5.10)
                          |  [-------]   
                          |
                          |(links via switch(s) for 10.10.5.0/24 network)
                          |
                          |  [---------------------------]
                         ethx[any machine in 10.10.6.0/24]
                             [---------------------------]

Общий способ отладки вашей установки:

  • представьте, что вы - IP-пакет: у вас есть IP-адрес источника, IP-адрес назначения.
  • Теперь, в интерфейсе, на котором вы сидите у источника, посмотрите, что маршруты этой машины говорят вам, какой следующий переход. И перейдите туда (но сначала убедитесь, что настройка машины позволяет вам, например, на машине eth0 / eth1, для перехода с одного интерфейса на другой требуется ipforward). И продолжайте, по одному прыжку за раз, к своей цели (И обратно к источнику: иногда маршрут / defaultgw целевой машины нарушается, и поэтому ответный пакет не отправляется по правильному пути)
    • ex1 (очень просто): 10.10.6.10 пытается отправить на 10.10.5.10: step1, вы находитесь на eth1 (10.10.6.10). У этой машины есть маршрут, говорящий: «10.10.5.0/24 находится прямо здесь, на eth0». Ipforwarding позволяет переключаться с eth1 на eth0. Перейдите к eth0. step2: теперь вы (тот же IP-пакет) на eth0. Оказывается, это ваша цель: ХОРОШО. шаг 2b: ответный пакет: обратный источник / место назначения: теперь вы пакет (10.10.5.10 -> 10.10.6.10 =): слава богу, локальный маршрут сообщает вам, что следующий переход находится на eth1. step4: нет eth1: вы в пункте назначения. ХОРОШО.
    • ex2 (немного длиннее ex :), это пакет от "any_machine", 10.10.6.12 (на стороне eth1). вы пытаетесь зайти как destinatino google (например, 8.8.8.8). Итак, вы "10.10.6.12 -> 8.8.8.8" и сначала вы сидите на интерфейсе 10.10.6.12 (скажем, eth3). Локальный маршрут на «any_machine» сообщает вам (поскольку это было предварительным условием, приведенным выше): «default gw = 10.10.6.10», поэтому вы переходите к «yourbox» и прибываете туда на стороне eth1. step2: теперь вы находитесь на «yourbox / eth1»: теперь локальные маршруты сообщают вам «вам нужно перейти на gw: 10.10.5.254 по умолчанию, через eth0» (а ipforward на «yourbox» позволяет вам переходить с eth1 на eth0). Теперь вы прибываете на eth0 и, следуя маршруту gw по умолчанию, вы прибываете позже на "somerouter" на ethW (10.10.5.254). и т.д. (и не забудьте проверить обратный маршрут)

Ваш шлюз по умолчанию - 10.10.5.254, однако интерфейс eth1 настроен как 10.10.6.10/24. Фактически это означает, что интерфейс 10.10.6.x не может попасть в шлюз по умолчанию, поскольку они находятся в разных подсетях.

Для правильной оценки ваших вариантов необходима более общая информация о сети, однако из того, что было опубликовано, у вас есть два варианта:

  • Убедитесь, что две сети на самом деле являются подсетями / 24, если это так, установите правильный шлюз для eth1 в файле конфигурации этого интерфейса.
  • Если интерфейсы являются частью более крупной суперсети, настройте два интерфейса, чтобы они существовали в подсети / 16, чтобы использовать один и тот же шлюз.

Вы включили переадресацию IP?

sysctl net.ipv4.ip_forward

Если он говорит 0, у вас нет, и ваш ящик не маршрутизирует пакеты.

Включите его

sysctl -w net.ipv4.ip_forward=1

И сделайте его постоянным, добавив в /etc/sysctl.conf:

net.ipv4.ip_forward = 1