Спросил об этом в сетевом инжиниринге в стеке обмена и был перенаправлен сюда.
У меня есть пара серверов с приведенной ниже конфигурацией
сервер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. может есть резон!
Подводя итог, у меня такие вопросы:
- Windows полностью отклоняет конфигурацию, когда мы пытаемся настроить 127.x.x.x, но Linux разрешает это, и это тоже с глобальной областью действия. Есть ли вариант использования для этого?
- В этом случае server2 отправляет запросы, предназначенные для 127.x.x.x, а server1 фактически отправляет ответы обратно. Если 127.x.x.x только хост-внутреннийа почему они вообще посылают пакеты по линку??