У меня есть два интерфейса: eth0 и eth1. У них обоих есть статические адреса. Они подключены к различным маршрутизаторам, и оба маршрутизатора имеют доступ в Интернет. Я использовал это учебное руководство для конфигурирования ссылок: https://www.thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System.
Проблема состоит в том, что у меня есть доступ к обеим подсетям, но я соединяюсь с Интернетом только через eth0. Когда я пытаюсь использовать ссылку eht1 f.ex. для проверки с помощью ping-запросов, я добрался Destination Host Unreachable
Как я должен настроить ссылки, чтобы иметь доступ в Интернет через них обоих.
маршрут-n:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.10.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Когда я установил 10.10.0.1
как шлюз по умолчанию я соединяюсь с Интернетом только через eth1.
/etc/network/interfaces:
auto eth0
iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
post-up ip route add 10.10.0.0/24 dev eth1 src 10.10.0.10 table rt2
post-up ip route add default via 10.10.0.1 dev eth1 table rt2
post-up ip rule add from 10.10.0.10/32 table rt2
post-up ip rule add to 10.10.0.10/32 table rt2
Система может иметь только один шлюз в данный момент. Только можете сделать необходимо вызвать некоторый трафик иначе ssh, ftp.. или к определенной сети для продолжения на другой интерфейс
Трафик маршрута к определенному порту через определенный интерфейс
Пример:
Здесь мы возьмем port 4444
как сервис для маршрутизации. Использовать mangle
таблица iptables для изменения 4444
пакеты.
sudo iptables -t mangle -A OUTPUT -p tcp –dport 4444 -j MARK –set-mark 0×1
Мы отмечаем все пакеты с местом назначения port 4444
как ’0×1 ′.
Удалить эту запись из iptables
мы можем использовать -D
вместо -A
.
Затем, создайте новую таблицу маршрутизации IP в /etc/iproute2/rt_table
просто дав запись
100 4444table
Запишите правило для 4444
пакеты.
ip rule add fwmark 0×1 lookup 4444table
Добавьте маршрут за новой таблицей 4444table
. Здесь мы будем использовать ’192.168.1.1 ′ в качестве шлюза для 4444
.
Мы копируем все записи кроме записи шлюза по умолчанию от основной таблицы.
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 4444table $ROUTE; done
Добавьте запись шлюза по умолчанию для 4444
пакеты к таблице 4444table
sudo ip route add default via 192.168.1.1 table 4444table
Использовать ip route show table 4444table
показать все маршруты в 4444table
.
Или маршрутизация местом назначения
Целевой IP 132.45.65.60
Снова используйте таблицу искажения iptables
для изменения пакетов для 132.45.65.60
sudo iptables -t mangle -A OUTPUT -d 132.45.65.60 -j MARK -set-mark 0×1
Мы отмечаем весь пакетный маршрутизатор к IP 132.45.65.60
как ’0×1 ′.
Теперь сохраните и перезапустите iptables
.
service iptables save
service iptables restart
Затем, создайте новую таблицу маршрутизации IP в /etc/iproute2/rt_tables
просто дав запись
100 132table
Запишите правило для пакетов к целевому IP 132.45.65.60
ip rule add fwmark 0×1 lookup 132table
Добавьте маршрут за новой таблицей 132table
. Здесь мы будем использовать 192.168.1.1
. Весь другой трафик пройдет шлюз по умолчанию.
Скопируйте все записи кроме записи шлюза по умолчанию от основной таблицы.
sudo ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table 132table $ROUTE; done
Добавьте запись шлюза по умолчанию для 132.45.65.60 пакетов к таблице 132table
sudo ip route add default via 192.168.1.1 table 132table
Редактирование 1
Если необходимо установить metric
иначе с metric
интерфейс без метрики имеет "приоритет"
auto eth0
iface eth0 inet static
address 192.168.1.202
netmask 255.255.255.0
gateway 192.168.1.1
auto eth1
iface eth1 inet static
address 10.10.0.10
netmask 255.255.255.0
gateway 10.10.0.1
metric 800
С этой установкой при наличии шлюз по умолчанию будет 192.168.1.1
и трафик пойдет канавка eth0
. Когда Вы делаете ifdown eth0
или кабель разъединения от eth0
, почти лучше всего будет шлюз 10.10.0.1
с metric 800
и трафик пойдет канавка eth1
. Когда Вы соединяете кабель или ifup eth0
значение по умолчанию gw будет снова 192.168.1.1
.
Как я говорю.
Система не может иметь двух шлюзов по умолчанию через один момент. Если будут иметь сеть, то не будет работать.