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

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

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

server1:

eno1: 127.15.0.1/16 scope global
eno2: 5.0.0.1/24

server2:

lo: 127.0.0.1/16 (it had /8. I changed the subnet mask using 'ip addr del 127.0.0.1/8 dev lo; ip addr add 127.0.0.1/16 dev lo')
eno2: 5.0.0.2/24

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

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

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

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

связь между 5.0.0.1 <-> 5.0.0.2 в порядке.

Моя первая попытка заключалась в том, чтобы добавить маршрут на server2, как показано ниже

ip r add 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 - это только внутренний узел , почему они даже отправляют пакеты по ссылке ??
-2
задан 30 August 2021 в 12:16
1 ответ

Флаги sysctl Linux в

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

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

route_localnet — BOOLEAN

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

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

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

0
ответ дан 30 August 2021 в 15:57

Теги

Похожие вопросы