У меня есть этот / etc / network / interfaces (IP-адреса на eth1 поддельные)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 10.0.2.15
netmask 255.255.255.0
broadcast 10.0.2.255
gateway 10.0.2.2
auto eth1
iface eth1 inet static
address 123.123.123.45
netmask 255.255.255.0
broadcast 123.123.123.255
gateway 123.123.123.1
Я использую eth0 для подключения к Интернету, а на eth1 я настроил общедоступный IP-адрес для веб-сервера.
Подключение к Интернету работает нормально, если я использую только eth0, а с другой стороны веб-сервер тоже работает нормально, если я поддерживаю только eth1. Они работают отлично, как задумано.
Проблема в том, что я хочу, чтобы обе сети были включены одновременно, и я использую исключительно eth0 для серфинга в Интернете / загрузки обновлений и т. Д., И я хочу направлять весь трафик, входящий в 123.123.123.45, только в эту сеть.
Как я могу это сделать? Я просмотрел много руководств, но не нашел рабочего решения или, возможно, я что-то делаю не так. Я не хочу перенаправлять трафик с одного интерфейса на другой, я хотел бы держать их отдельно и перенаправлять трафик в зависимости от того, с какого IP они приходят.
Это возможно?
Я уже пробовал
route add -host 123.123.123.45 dev eth1
Заранее спасибо.
Ваша непосредственная проблема заключается в том, что вы объявляете шлюз по умолчанию для обеих записей. Я предполагаю, что это приведет к тому, что последний из них «выиграет» и станет шлюзом по умолчанию.
Однако, если вы удалите пакет на eth1, у вас будет проблема с тем, что ящик будет отвечать на eth0, даже если пакет прибыл на eth1. Чтобы указать ящику ответить на конкретный интерфейс, вам нужно сделать то, что обычно называется маршрутизацией от источника.
У меня на коробке есть следующий набор команд:
/sbin/ip rule add from 1.2.3.4/24 tab 1 priority 500
/sbin/ip route add default via 1.2.3.1 dev eth2 tab 1
/sbin/ip route flush cache
Первая строка указывает блоку искать в таблице «1» информацию о пакетах, исходящих с IP 1.2.3.4. Вторая строка создает таблицу «1», в которой говорится, что шлюз по умолчанию в этой таблице это 1.2.3.1. Последняя строка гарантирует, что это вступит в силу немедленно.
Для получения дополнительной информации см., Например, http://lartc.org/howto/lartc.rpdb.html
Наличие двух шлюзов по умолчанию с одинаковой метрикой приводит к лотерее, для которой будет использован один. Это объясняет ваши проблемы.
Вы можете либо последовать совету Bittrance, либо убедиться, что ваши два маршрута по умолчанию имеют разные метрики. В этом случае будет использоваться тот, у которого меньшая метрика, если только маршрут не закрыт. Однако это работает только в том случае, если второй шлюз по умолчанию действительно обеспечивает маршрут к общедоступному Интернету.
Чтобы настроить два маршрута по умолчанию с разными показателями, используйте metric
ключевое слово в ip route add
команда.
Я бы лично удалил инструкции шлюза из файла интерфейсов и предпочел бы добавить команды post-up.
РЕДАКТИРОВАТЬ Основываясь на вашем дополнительном комментарии, я немного смущен тем, чего именно вы хотите достичь и как настроена эта сеть.
Очевидно, что интерфейс с общедоступным IP-адресом должен быть подключен непосредственно к Интернету (предположительно через устройство, предоставленное вашим интернет-провайдером). Если этот сервер также является вашим шлюзом по умолчанию в Интернет, то есть все запросы на общедоступный IP-адрес должны проходить через этот сервер, тогда сервер должен быть настроен как маршрутизатор (т.е. IP-переадресация должна быть включена, а все остальные устройства в сети должны имеют частный IP-адрес этого сервера в качестве шлюза по умолчанию).
Если в вашей сети есть другой компьютер, который предоставляет доступ к Интернету по умолчанию, то это устройство должно быть установлено в качестве шлюза по умолчанию для всех других сетевых устройств, и ваш сервер вообще не должен иметь маршрут по умолчанию на своем внутреннем интерфейсе (eth0), поскольку он напрямую подключен к этой сети.
У вас не может быть двух шлюзов по умолчанию. Выберите любой.
Если вы хотите использовать два интернет-провайдера одновременно, вам понадобится BGP.
Может ли этот ответ на другой вопрос также привести к вашему ответу?
Установка двух сетевых адаптеров в двух отдельных локальных сетях приводит к ошибке