Настройте маршрутизатор с двумя глобальными сетями и несколькими подсетями

Я пытаюсь настроить коробку Debian в качестве маршрутизатора для офиса. Мне нужно иметь 3 подсети в локальной сети и 2 WAN-соединения, и я хочу, чтобы одна из подсетей ВСЕГДА использовала WAN 1, а другая подсеть ВСЕГДА использовала WAN 2 (без балансировки нагрузки).

Например, я хочу иметь эти три подсети: - 10.1.1.0/24 - 10.1.2.0/24 - 10.1.3.0/24

Я хочу, чтобы 10.1.1.0/24 выходил в Интернет, используя ISP #1 и 10.1.2.0/24 и 10.1.3.0/24, чтобы использовать ISP #2.

И второй уровень сложности: ISP #2 - это DSL-соединение с динамическим IP-адресом.

Я думаю, что это должно быть легко реализовать, но я никогда не делал этого раньше, и я не смог найти пример в Интернете. Я читал LARTC, но я не мог адаптировать приведенные примеры к тому, что я хочу сделать.

Я буду признателен за любую инициативу!

2 ответа

Решение

Вы можете сделать это с ip rule и друзья (ключевое слово: маршрутизация на основе источника). Сначала вам нужно создать другую таблицу маршрутизации. Давайте назовем это wan2. добавить его в /etc/iproute2/rt_tables

К счастью, вывод ip route находится в том же формате, что и ввод. Вы можете сделать это, чтобы скопировать таблицу (без маршрута по умолчанию)

ip route show table main | grep -Ev "^default" | while read ROUTE; do
  ip route add table wan2 $ROUTE
done

Затем добавьте маршрут по умолчанию

ip route add table wan2 default via 1.2.3.4 dev ethX

Когда закончите, вы можете использовать ip rule Команда для построения правил выбора соответствующей таблицы маршрутизации:

ip rule add from 10.1.2.0/24 table wan2

Я нашел этот скрипт где-то в интернете, но забыл где. Вы можете использовать его как шаблон

#!/bin/sh
set -e

MARK=100
TABLE_NAME=wan2
DEV=eth2
GATEWAY=192.168.4.1

IPTABLES=/sbin/iptables
IP=/sbin/ip

$IP route flush table $TABLE_NAME

$IP route show table main | grep -Ev "^default" | while read ROUTE; do
    $IP route add table $TABLE_NAME $ROUTE
done

$IP route add table $TABLE_NAME default dev $DEV via $GATEWAY

while true; do
    ip rule del table $TABLE_NAME 2>/dev/null || break
done

$IP rule add from 10.1.2.0/24 table $TABLE_NAME
....
$IP route flush cache

Вам придется взглянуть на маршрутизацию на основе источника. По сути, вы должны настроить две таблицы маршрутизации и использовать iptables для маркировки трафика, чтобы использовать одну из таблиц маршрутизации.

Я бы оставил маршрут по умолчанию на линии ADSL и использовал бы настраиваемую таблицу маршрутизации для другой линии WAN. Это предполагает, что isp1(ADSL) находится на eth0 и правильно настроен, а isp2(статический) на eth1.

# Создание пользовательской таблицы маршрутов
echo 200 isp2 >>/etc/iproute2/rt_tables
# Добавьте вашу исходную сеть
добавление правила ip из таблицы 10.1.2.0/24 isp2
добавление правила ip из таблицы 10.1.3.0/24 isp2
# Установить маршрут по умолчанию
ip route добавить значение по умолчанию через isp2.default.gw dev eth1 таблица isp2
# Очистить кэш маршрута, чтобы немедленно применить изменения
ip route flush cache
# включить пересылку
echo 1 > /proc/sys/net/ipv4/ip_forward

Вам также необходимо настроить NAT.

В вашем динамическом интерфейсе вы бы использовали:

iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0

И на статическом интерфейсе

iptables -t nat -A POSTROUTING -o eth1 -j SNAT - к источнику isp2.external.ip
Другие вопросы по тегам