LINUX.ORG.RU

Как подключить второй интернет к серверу?

 


1

1

Доброго времени суток уважаемые знатоки, нужна помощь в подключении второго канала интернета на сервер Ubuntu 20.04 nginx 1.18. Проблема такая, есть 2 сетевых интерфейса enp9s0 и enp7s0, в enp7s0 подключен кабель напрямую от провайдера и подключение осуществляется утилитой PPPoeConf. В интерфейс enp9s0 воткнут второй интернет, но он уже через маршрутизатор TL-R470T+ (так как будет использоваться на основном ПК и на сервере), порт 80 на маршрутизаторе открыт. Далее на сервере есть несколько виртуальных хостов nginx и все на 80м порту идут через интерфейс enp7s0. Вопрос, как один из хостов направить через enp9s0 интерфейс?

По DHCP адресу в роутере 192.168.0.х то он открывается, а вот через внешний IP не открывается...


Ну во-первых тут есть две задачи:

  • настроить чтобы соединения, которые пришли из сети первого провайдера уходили на его шлюз, а второго - через второй шлюз;
  • настроить, чтобы запросы на один servername были доступны только с определённого интерфейса;

Тебе придётся ознакомиться как работает сеть. Что такое маршрутизация.

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

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

Ну и последняя задача, чтобы конкретный Servername был доступен только с определённого IP тебе нужно в настройках WEB сервера указать не просто порт 80 или 443, а ещё указать и IP адрес сетевого интерфейса с которого должен быть доступен твой Servername.

Если у тебя есть ещё и доменные имена, тебе нужно внести правки в A записи на DNS сервере, указав, что нужное тебе доменное имя доступно с IP адреса второго провайдера. На роутере второго провайдера сделать проброс порта 80 и 443 на сетевой интерфейс сервера, с которого доступна сеть второго провайдера.

В рамках HTTP и вообще TCP сессий устанавливается сетевое соединение, которое привязывается к сетевому интерфейсу через который открыта эта сессия и поэтому WEB сервер в рамках сессии будет отправлять пакеты на соответствующий сетевой интерфейс.

Вот здесь в общих чертах написано более-менее правильно:

UPD:

Хотя, если ты пишешь, что у тебя второй провайдер подключен не напрямую к твоему серверу, а есть ещё роутер, то ты можешь для проброса 80 и 443 порта делать не просто DNAT, а ещё и SNAT для подмены IP адреса источника (отправителя) на внутренний IP адрес роутера. В этом случае тебе не придётся разбираться с настройкой маршрутизации. Т.к. в качестве источника пакетов через сеть второго провайдера будет внутренний IP адрес роутера и твой сервер будет в любом случае ответные пакеты перенаправлять на роутер. Но в этом случае в логах WEB сервера в качестве IP адреса клиента ты всегда будешь видеть внутренний IP адрес роутера подключенного к сети второго провайдера. Если тебя так устраивает - можешь сделать так. Т.е. на роутере второго провайдера тебе при пробросе портов нужно делать DNAT на IP адрес твоего сервера и SNAT на внутренний IP адрес роутера.

Если ты сейчас делаешь просто DNAT, то это причина почему твой сайт не доступен через IP адрес второго провайдера.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 3)
Ответ на: комментарий от Mooks

В том то и дело что на роутере проброшен порт

Как проброшен, сделан только DNAT или ещё и SNAT?

переадресация на внутренний IP DHCP сервера.

При чём здесь DHCP сервер?

Прочитай пожалуйста ещё раз первое сообщение в теме и постарайся понять.

kostik87 ★★★★★
()
Ответ на: комментарий от Mooks

Смотри, обычно когда у тебя один шлюз в мир для проброса порта со шлюза тебе достаточно сделать DNAT на шлюзе.

В этом случае ip адрес отправителя останется тем же что и был. Адрес получателя сменится на ip адрес сервера в локальной сети.

Сервер получит пакет, обработает его и ответный пакет будет отправлен получателю во внешнем мире на ip адрес, который был указан в адресе отправителя.

Тут вступает в действие таблица маршрутизации. По ней сервер проверит все записи и увидит, что единственная подходящая запись это маршрут по умолчанию, т.е. внутренний ip адрес шлюза.

Перенаправит пакет на шлюз и шлюз сделает обратное преобразование, заменив ip адрес отправителя своим внешним ip адресом.

У тебя же есть второй провайдер, второй сетевой интерфейс на сервере.

В этом случае, если ты сделаешь только DNAT на шлюзе, т.е. заменишь ip адрес получателя на ip адрес сервера в локальной сети, то пакет конечно попадет на сервер. Но из-за того, что ip адрес отправителя пакета остался прежним, т.е. ip адресом из внешней сети, то пакет в соответствии с таблицей маршрутизации опять отправится на маршрут по умолчанию, т.е. на шлюз, в твоем случае на шлюз первого провайдера. И в этом случае пакет будет перенаправлен изначальному отправителю, но в качестве ip адреса отправителя пакета так и останется внутренний ip адрес интерфейса твоего сервера подключенный к первому провайдеру.

Поэтому компьютер который пытался открыть сайт отбросит его, т.к. ip адрес сервера что ему ответил на запрос не соответствует ip адресу сервера, которому он посылал запрос на открытие сайта.

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

Либо делать на шлюзе второго провайдера, т.е. твоём роутере, что подключен к сети второго провайдера не только DNAT, но ещё и SNAT.

SNAT заменяет ip адрес отправителя на указанный ip адрес, в твоём случае нужно делать SNAT на внутренний ip адрес твоего роутера, подключенного к сети второго провайдера.

В этом случае перенаправленный пакет придет на сервер во внутренней сети, сервер его обработает и отправит ответный пакет на внутренний ip адрес роутера подключенного к сети второго провайдера.

По таблице маршрутизации он увидит, что сеть до роутера подключена к его второму сетевому интерфейсу и у него есть маршрут до этой сети.

Пакет уйдет со второго сетевого интерфейса и попадет на роутер подключенный к сети второго провайдера.

Роутер получив этот пакет сделает обратное преобразование. Т.е. заменит ip адрес отправителя на свой внешний ip адрес, ip адрес получателя заменит на ip адрес компьютера во внешнем мире, тот с которого пришел запрос.

Компьютер во внешнем мире получит пакет и примет его. Т.к. ip адрес сервера с которого пришел ответ будет соответствовать ip адресу сервера на который он посылал пакет с запросом открыть сайт.

Прочитай ещё раз первое сообщение в теме, я там специально расписал два способа. И особенности первого и второго способа.

Если тебе нужна помощь, то предоставь схему своей сети с внутренними адресами твоей сети первого и второго провайдера. Внешние ip адреса можешь заменить на A и B.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

шлюз (маршрут по умолчанию) может быть только один.

Спасибо. Популярно обьяснил. А-то, я знал конечно, что если воткнуть в комп два интернет-кабеля, скорость выше не станет, просто внятно обьяснить этого заказчику не смог.

cadaber ★★
()
Ответ на: комментарий от kostik87

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

Mooks
() автор топика
Ответ на: комментарий от Mooks

Прочти пожалуйста первое сообщение в теме, там есть ссылки на статью.

Так же прочти предыдущее сообщение на которое ты ответил. Я не знаю что тебе ещё написать, если тебе не понятно.

Я специально писал простыми словами с описанием механики, что как и почему.

В первом сообщении и предыдущем описаны два способа с пояснением нюансов.

kostik87 ★★★★★
()
Ответ на: комментарий от kostik87

Бро, напиши мне в ТГ molokovskiy или свои контакты оставь, чтоб тут не сорить, очень помощь нужна, а ты я так понял шаришь.

Mooks
() автор топика
Последнее исправление: Mooks (всего исправлений: 1)

Всё написано в LARTC Ну или переноси пост в Job и озвучивай ценник.

gremlin_the_red ★★★★★
()
Ответ на: комментарий от Mooks

Тебе уже написали предложение про публикацию в job. А так, сделай SNAT параллельно с DNAT на роутере второй сети и у тебя будет всё работать. Внимательно прочитай нюансы использования этого способа.

Если я правильно понял схему твоей сети из твоего описания.

Просто открой гугл и в введи два запроса SNAT, затем DNAT, почитай.

Хотя я здесь дал пояснение что такое SNAT:

SNAT заменяет ip адрес отправителя на указанный ip адрес, в твоём случае нужно делать SNAT на внутренний ip адрес твоего роутера, подключенного к сети второго провайдера.

Как подключить второй интернет к серверу? (комментарий)

DNAT подменяет IP адрес назначения, в твоём случае на IP адрес твоего сервера, подключенного к роутеру сети второго провайдера.

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

  • IP адрес отправителя (источник пакета)
  • IP адрес получателя (назначение пакета)
  • MAC адрес отправителя
  • MAC адрес получателя

Тебе важны первые два поля. О двух последних тебе думать не нужно.

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

В сети же с двумя провайдерами, т.е. двумя шлюзами, для простой настройки без нескольких таблиц маршрутизации, тебе нужно делать ещё и SNAT, т.е. замену IP адреса отправителя пакета на IP адрес роутера в локальной сети.

Если тебе нужно с двумя таблицами маршрутизации, то читай приведённые статьи. Я не зря в первом сообщении привёл две ссылки.

Либо публикуй в job.

Я тебе дал пояснение довольно полные, постарайся их понять, если ты не можешь, ну тогда пиши в job и предлагай цену, тебе помогут. Я не готов помогать тебе ещё, я тебе уже дал описание того что и как работает. Поработай и ты, постарайся понять и сделать, способ со SNAT и DNAT простой.

Если твой роутер не может делать SNAT, что вряд ли, скорее всего, ты не разобрался в интерфейсе проброса портов или эта возможность не видна сразу, то разбирайся со статьями в первом сообщении, ссылки я тебе предоставил.

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.