Назад | Перейти на главную страницу

linux ip route через 2 шлюза, 3 интерфейса

У меня 3 интерфейса. Заменю общедоступные ips на 10.x.x.x. eth0:

ips: 10.1.1.64-10.1.1.70
mask: 255.255.255.0
gateway: 10.1.1.1
ip route table: gw1a

eth1:

ip: 10.1.1.71
mask: 255.255.255.0
gateway: 10.1.1.1
ip route table: gw1b

eth2

ip: 10.2.2.135
mask:255.255.255.192
gateway: 10.2.2.129
ip route table: gw2

eth3 - будет использоваться в редких случаях. вниз большую часть времени. используется для настройки других

ip: 192.168.51.69
netmask: 255.255.255.0
gateway: 192.168.51.254
ip route table: office

Пока я настраиваю сервер, я подключаюсь с 192.168.51.50.

Я сделал следующий сценарий для настройки маршрутов. Мне нужно, чтобы пакеты выходили через интерфейс, с которого они заходят. Шлюз по умолчанию в основной таблице в настоящее время 192.168.51.254. Поменяю позже на шлюз eth0. Когда запускаю скрипт - теряю связь с сервером. Зачем? Неправильно ли маршрутизируются пакеты, которые должны быть отправлены на компьютер, который я подключаюсь с 192.168.51.50? Правильны ли мои правила / маршруты IP-маршрута. Я не сетевой гуру ...

#!/bin/bash


ip=/sbin/ip

$ip rule show | grep -Ev '^(0|32766|32767):' | while read PRIO RULE; do
  echo "Removing rule prio ${PRIO%%:*} $RULE"
  $ip rule del prio ${PRIO%%:*}
done

$ip route flush table gw1a >/dev/null 1>&2
$ip route flush table gw1b >/dev/null 1>&2
$ip route flush table gw2 >/dev/null 1>&2
$ip route flush table office >/dev/null 1>&2

$ip route add default via 10.1.1.1 table gw1a dev eth0
$ip route add default via 10.1.1.1 table gw1b dev eth1
$ip route add default via 10.2.2.129 table gw2 dev eth2
$ip route add default via 192.168.51.254 table office dev eth3

for i in `/usr/bin/seq 65 70` ; do
  echo "rule from 10.1.1.$i -> gw1a"
  $ip rule add from 10.1.1.$i table gw1a
done

echo "rule from 10.1.1.71 -> gw1b"
$ip rule add from 10.1.1.71 table gw1b

echo "rule from 10.2.2.135 -> gw2"
$ip rule add from 10.2.2.135 table gw2

echo "rule from 192.168.51.69 -> office"

Решено! Я добавил локальные сети (доступные напрямую, без шлюза) в таблицы gw1a, gw1b, gw2 и office:

ip route add src 10.1.1.64 10.1.1.0/24 proto kernel scope link table gw1a dev eth0
ip route add src 10.1.1.71 10.1.1.0/24 proto kernel scope link table gw1b dev eth1
ip route add src 10.2.2.135 10.2.2.128/26 proto kernel scope link table gw2 dev eth2
ip route add src 192.168.51.69 192.168.51.0/24 proto kernel scope link table office dev eth3

Я видел это в основной таблице, поэтому я добавил его во все остальные таблицы.

Я подожду комментариев, прежде чем приму это как ответ. Я чувствую, что есть способ получше ...