LINUX.ORG.RU

История изменений

Исправление kostik87, (текущая версия) :

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

  • настроить чтобы соединения, которые пришли из сети первого провайдера уходили на его шлюз, а второго - через второй шлюз;
  • настроить, чтобы запросы на один 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, :

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

  • настроить чтобы соединения, которые пришли из сети первого провайдера уходили на его шлюз, а второго - через второй шлюз;
  • настроить, чтобы запросы на один 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 адрес роутера.

Исправление kostik87, :

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

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

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

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

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

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

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

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

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

Исходная версия kostik87, :

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

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

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

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

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

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

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

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

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