Рейтинг:-2

Проблемы с подключением к серии 127.x.x.x

флаг gt

Спросил об этом в сетевом инжиниринге в стеке обмена и был перенаправлен сюда.

У меня есть пара серверов с приведенной ниже конфигурацией

сервер1:

eno1: глобальная область действия 127.15.0.1/16
эно2: 5.0.0.1/24

сервер2:

lo: 127.0.0.1/16 (у него было /8. Я изменил маску подсети, используя «ip addr del 127.0.0.1/8 dev lo; ip addr add 127.0.0.1/16 dev lo»)
ено2: 5.0.0.2/24

eno1 server1 подключен к совершенно другой сети L2 и полностью изолирован.

Интерфейсы eno2 обоих серверов подключены к одной и той же сети L2. Теперь мне нужно получить доступ к 127.15.0.1 с server2.

Server1 был развернут давно, и у меня нет прав на изменение какой-либо конфигурации. Я не знаю, почему кто-то использовал подсеть 127.x.x.x с глобальной областью действия. Не уверен, что это действительная конфигурация, но мне приходится с ней жить. У меня есть полный контроль над server2, и я могу что-то изменить.

Оба сервера основаны на Linux.

связь между 5.0.0.1 <-> 5.0.0.2 хорошая.

Моей первой попыткой было добавить маршрут на server2, как показано ниже.

ip r добавить 127.15.0.1/32 через 5.0.0.1 пингуется 127.15.0.1 с server2. Я вижу запросы и ответы ping в tcpdump на server2, но команда ping показывает 100% потерю.

Я отключил rp_filters

sysctl.cnf:

net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.lo.rp_filter=0
net.ipv4.conf.eno2.rp_filter=0

перезагружен после обновления sysctl.conf

И я сбросил iptables. (iptables-F)

Тот же результат. Я думаю, что server2 не любит использовать серию 127.x.x.x. Итак, я добавил следующее правило на сервер 2

iptables -t nat -A OUTPUT -d 5.0.0.1 -j DNAT --to-destination 127.15.0.1

это правило должно заменить IP-адрес назначения на 127.15.0.1, если пакет предназначен для 5.0.0.1.

пингуется 5.0.0.1 с server2. Iptables заменил IP-адрес назначения на 127.15.0.1 (подтвердил это на server1 tcpdump). Сервер 1 ответил, но ответы снова отбрасываются.

В этот момент у меня закончились идеи. Я отключил server1 для обслуживания и заменил 127.15.0.1/26 на 192.168.1.1/16. В этом случае подключение работало нормально (с iptables и без него). Теперь вопрос в том, связана ли проблема с использованием 127.x.x.x? Если да, то есть ли выход?? Если нет, что еще я могу попробовать?

Примечание. Эта конфигурация работала раньше. Недавно мы потеряли server2 (на котором был старый Linux), и я строю его с нуля. Также Windows не позволяет использовать 127.x.x.x для интерфейсов, отличных от loopback. Не уверен, почему Linux разрешает это на интерфейсах, отличных от lo. может есть резон!

Подводя итог, у меня такие вопросы:

  1. Windows полностью отклоняет конфигурацию, когда мы пытаемся настроить 127.x.x.x, но Linux разрешает это, и это тоже с глобальной областью действия. Есть ли вариант использования для этого?
  2. В этом случае server2 отправляет запросы, предназначенные для 127.x.x.x, а server1 фактически отправляет ответы обратно. Если 127.x.x.x только хост-внутреннийа почему они вообще посылают пакеты по линку??
Zac67 avatar
флаг ru
127.0.0.0/8 зарезервирован для *внутренней обратной связи хоста*, а не для использования в локальной сети, см. RFC 5735. Существует множество других функциональных диапазонов адресов согласно RFC 1918.
RBK050 avatar
флаг gt
Спасибо. Не хочу показаться грубым, но я это и так знал. Как уже упоминалось в вопросе, в тот момент, когда я меняю подсеть на частные/общедоступные подсети, это работает. Я работаю над исправлением конфигурации. Я резюмировал свои вопросы в конце вопроса. Было бы интересно узнать ваше мнение об этом.
anx avatar
флаг fr
anx
Даже если у вас нет доступа к другому серверу, было бы уместно, если бы лицо, ответственное за его обслуживание, а) объяснило себя б) показало вам соответствующую конфигурацию, чтобы вам не приходилось задаваться вопросом, *почему* это вообще работало раньше и в ) исправьте это безобразие.
Ron Maupin avatar
флаг us
Адреса в петлевом блоке 127.0.0.0/8 не могут появляться ни в какой сети и нигде. См. [этот ответ] (https://networkengineering.stackexchange.com/a/40156/8499) для соответствующих RFC. Этот диапазон распознается самим IPv4, и любая реализация IPv4, которая позволяет трафику, предназначенному для адреса в этом диапазоне, выходить из хоста, является ошибочной реализацией IPv4. Трафик, направленный на эти адреса, _требуется_ для возврата обратно на хост-источник.
Ron Maupin avatar
флаг us
_[RFC 1122, Требования к интернет-хостам — коммуникационные уровни] (https://tools.ietf.org/html/rfc1122#section-3.2.1.3)_: "_Внутренний петлевой адрес хоста. Адреса этой формы НЕ ДОЛЖНЫ появляться вне хоста."_
RBK050 avatar
флаг gt
Расслабьтесь, ребята. Я хорошо знаю RFC. Я просто хотел знать, поддерживает ли это Linux. И похоже, что это так. Пожалуйста, посмотрите на ответ. Я никого не призываю к его использованию. Просто хотел узнать, есть ли возможность.
Рейтинг:0
флаг fr
anx

Флаги sysctl Linux в

/sys/net/ipv4/conf/*/route_localnet

разрешить отключать разумную обработку таких пакетов.

route_localnet — логическое значение

Не рассматривайте петлевые адреса как марсианский источник или пункт назначения при маршрутизации. Это позволяет использовать 127/8 для целей локальной маршрутизации. по умолчанию ЛОЖЬ

Поскольку немногие здравомыслящие люди когда-либо будут делать такие вещи, в наши дни это может работать, а может и не работать (последний раз я проверял это несколько лет назад).

Пожалуйста, назначьте любой зарезервировано для этой цели (возможно, локальная ссылка, но не внутренняя) или принадлежит IP-пространство для рассматриваемых интерфейсов. Продолжение этой странной настройки только вызовет больше проблем, особенно когда существуют простые альтернативы.

RBK050 avatar
флаг gt
Это сработало. Эта запись proc является причиной черной магии. После настройки подключение заработало. Мне удалось убедить мою команду использовать частные IP-адреса. Спасибо

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.