Два интерфейса, два адреса, два шлюза?

В Unix все - файл.

Эти файлы организованы в древовидной структуре, начинающейся в корне /.

Ваша файловая система или файловые системы будут затем смонтированы в соответствующих местах в Вашем / согласно Вашему /etc/fstab файл. Этот файл содержит информацию о Ваших файловых системах, какому устройству они принадлежат и к которой точке они будут смонтированы к - точка монтирования.

Это, "монтируют понятие".

Это не ограничено дисками и другим blockdevices, вот некоторое вовлечение в качестве примера, смонтируйтесь:

  • Смонтируйте представление своего рабочего ядра под/proc
  • Смонтируйте специальный раздел журнала (другое устройство, "logfriendly" файловая система) под/var/log
  • Установите различные системы и смонтируйте всего один корневой каталог
  • Смонтируйте удаленные каталоги, например, через NFS к Вашей системе
  • Смонтируйте изображение CD к определенному каталогу
14
17.10.2011, 16:58
3 ответа

Вы неправильно понимаете проблему. Не каждый пакет является ответом, и не каждый пакет может быть подобран к некоторому другому пакету, таким образом, что "тот же сетевой интерфейс, поскольку они вошли на", имеет смысл. То, что Вы хотите сделать, выбрать шлюз для пакета на основе его исходного IP-адреса.

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

Во-первых, составьте две таблицы (Замена <NAME1> и <NAME2> с разумными именами Ваших двух поставщиков, того же с IP1, DEV1, и так далее):

echo 200 <NAME1> >> /etc/iproute2/rt_tables
echo 201 <NAME2> >> /etc/iproute2/rt_tables

Добавьте шлюз к каждой таблице маршрутизации (в случае необходимости):

ip route add <NET1> dev <DEV1> src <SRC1> table <NAME1>
ip route add <NET2> dev <DEV2> src <SRC2> table <NAME2>

Затем маршрут по умолчанию:

ip route add default via <IP1> table <NAME1>
ip route add default via <IP2> table <NAME2>

Затем правила выбрать таблицу маршрутизации на основе исходного адреса:

ip rule add from <IP1> table <NAME1>
ip rule add from <IP2> table <NAME2>

Посмотрите Маршрутизацию для нескольких восходящих каналов/поставщиков для получения дополнительной информации.

16
27.01.2020, 19:51

Ответ Дэвида Шварца отличный, но вы можете немного упростить правила маршрутизации, имея только одну дополнительную таблицу, и используя ваш маршрут по умолчанию для другой. У меня есть сервер, который находится за двумя NAT шлюзами, и я недавно просмотрел процесс воссоздания этого сценария между кучей ВМ. Мой /etc/network/interfaces выглядит следующим образом:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.13.13
    netmask 255.255.255.0
    up ip route add table optus default via 192.168.13.10
    up ip rule add from 192.168.13.213 table optus
    up ip route add default via 192.168.13.11

auto eth0:0
iface eth0:0 inet static
    address 192.168.13.213
    netmask 255.255.255.0

(это для установки, где два провайдера - Optus и iiNet, отсюда и название таблицы 'optus')

Это, плюс строка в /etc/iproute2/rt_tables, создающая таблицу, должна быть всем, что вам нужно. У вас будет два IP-адреса; трафик с 192.168.13.13 будет выходить через 192.168.13.11, а трафик с 192.168.13.213 будет выходить через 192.168.13.10. Настройте эти два шлюза так, чтобы они делали свою портовую экспедицию соответствующим образом (192.168.13.11 перенаправляет трафик на 192.168.13.13, а 192.168.13.10 перенаправляет трафик на 192.168.13.213), а остальные должны позаботиться о себе.

Вам, возможно, придется немного подкорректировать свою ситуацию, поскольку вы используете публичные IP-адреса напрямую, но что-то подобное все равно должно работать. Кроме того, гораздо проще сделать это в /etc/network/interfaces, а затем git-управлять этим файлом, вместо того, чтобы пытаться вспомнить, как он был настроен, двумя годами позже, когда система должна быть перезагружена!

6
27.01.2020, 19:51

Пример двойной сети

В этом примере показано, как дополнительный eth1с 10.130.0.2сетевой маской 255.255.255.255и шлюзом 10.130.0.1можно сделать доступным для служб, которые связываются с ним, напримерping -I eth1 8.8.8.8

Технически мы:

  • Добавление другого шлюза с большей метрикой
  • Добавление/использование таблицы 100 и ее настройка
  • Добавление правила маршрутизации трафика в/из eth1 через него
ip addr add 10.130.0.2/32 broadcast 10.130.0.2 dev eth1
ip link set eth1 up
ip route add 10.130.0.1 src 10.130.0.2 dev eth1
ip route add 10.130.0.1 src 10.130.0.2 dev eth1 table 100
ip route add default via 10.130.0.1 dev eth1 metric 10
ip route add default via 10.130.0.1 dev eth1 table 100
ip rule add from 10.130.0.2/32 table 100
ip rule add to 10.130.0.2/32 table 100
curl --interface eth1 ifconfig.co
curl --interface eth0 ifconfig.co
ping -I eth1 8.8.8.8
3
28.01.2020, 00:33

Теги

Похожие вопросы