Переадресация портов не работает для определенных IP-адресов локальной сети

Переадресация портов не работает для определенных IP-адресов локальной сети

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

У меня есть сервер CentOS в двух сетях:

  • NIC1 имеет публичный IP-адрес со шлюзом, установленным на коммутаторе 1. (ADSL-Интернет)
  • NIC2 настроен на 10.10.10.2, шлюз на Switch 2 не установлен. (Кабельный Интернет)
  • Шлюз/маршрутизатор Switch 2 — 10.10.10.1. (маршрутизатор ASUS)

В пределах локальной сети другие компьютеры локальной сети могут получить доступ к 10.10.10.2 через открытые порты. Когда правило переадресации порта установлено со шлюза/маршрутизатора 10.10.10.1 --> 10.10.10.2, это не работает. Переадресация порта на шлюзе/маршрутизаторе 10.10.10.1 --> на 10.10.10.3 работает (машина Windows со шлюзом, установленным на 10.10.10.1).

Можно ли получить доступ к 10.10.10.2 из публичного Интернета через маршрутизатор ASUS 10.10.10.1?

решение1

Маршрутизация политики IP.

Я нашел две записи того же самого, что я использовал для обновления моего сервера CentOS, чтобы включить 2-ю сетевую карту для приема и отправки пакетов. Также успешно обновил другой похожий сервер с двумя сетевыми картами/шлюзами.

http://jensd.be/468/linux/two-network-cards-rp_filter<-- Я настроил IP-политики в разделе «лучшее решение» и не менял значение rp_filter. В этой статье также есть хорошие диаграммы.

http://www.microhowto.info/howto/ensure_symmetric_routing_on_a_server_with_multiple_default_gateways.html <--дополнительный пример вышесказанного, который прояснил для меня ситуацию.

Если вы хотите, чтобы изменения были постоянными, следуйте инструкциям по первой ссылке выше.

Мой пример:

  • ip route add 99.88.77.66/24 dev eth0 table 1 (пример публичного IP №1)
  • добавить маршрут ip по умолчанию через 99.88.77.1 таблица 1 (пример шлюза Public IP #1)
  • ip route add 10.10.10.0/24 dev eth1 table 2 (вторая сетевая карта в другой сети)
  • добавить маршрут ip по умолчанию через 10.10.10.1 таблица 2 (шлюз маршрутизатора ASUS)
  • правило ip добавить из 99.88.77.66/32 таблица 1 приоритет 100
  • добавить правило ip из 10.10.10.4/32 таблица 2 приоритет 110
  • ip route очистить кэш

Значение /24 может меняться в зависимости от маски подсети вашего IP-адреса.

решение2

Сначала нам нужно понять, почему ваша настройка не работает. Для этого нам нужно рассмотреть, что происходит.

  • Попытка подключения осуществляется через «кабельное» интернет-соединение.
  • Маршрутизатор NAT изменяет адрес назначения и создает запись в таблице сопоставления.
  • Пакет достигает вашего сервера, и генерируется ответ.
  • Ваш сервер ищет пункт назначения для ответа в своей таблице маршрутизации и отправляет пакет на шлюз по умолчанию (например, на интернет-соединение «ADSL»).
  • Скорее всего, пакет будет отброшен из-за поддельного исходного адреса. Даже если он вернется к клиенту, его исходный адрес не будет соответствовать тому, который ожидает клиент, поэтому клиент отбросит его как поддельный.

Теперь мы понимаем, что происходит не так, и мы можем что-то с этим сделать. Есть несколько вариантов.

Вариант 1 — использовать «политику маршрутизации» на сервере для маршрутизации трафика на основе исходного IP. Это лучший вариант, если сервер его поддерживает (последние версии Linux поддерживают).Ответ Стайлаописывает, как настроить маршрутизацию политик на сервере Linux для маршрутизации на основе адреса источника.

Вариант 2 — указать шлюз по умолчанию сервера на ящик, который может выполнять маршрутизацию политик. Тогда этот ящик сможет правильно маршрутизировать трафик в зависимости от исходного IP. Это может быть полезным решением, если ОС сервера не поддерживает маршрутизацию политик.

Вариант 3 — заставить NAT-бокс Маскурадить трафик, который он перенаправляет. Я бы посчитал это последним вариантом, так как он скрывает реальный адрес источника трафика.

Связанный контент