У меня 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
Я видел это в основной таблице, поэтому я добавил его во все остальные таблицы.
Я подожду комментариев, прежде чем приму это как ответ. Я чувствую, что есть способ получше ...