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

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

Я пытаюсь настроить Debian в качестве маршрутизатора для офиса. Мне нужно иметь 3 подсети в LAN и 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 но я не мог адаптировать примеры, которые они предоставляют, к тому, что я хочу делать.

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

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

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

#Create a custom route table
echo 200 isp2 >>/etc/iproute2/rt_tables
#Add your source network
ip rule add from 10.1.2.0/24 table isp2
ip rule add from 10.1.3.0/24 table isp2
#Set the default route
ip route add default via isp2.default.gw dev eth1 table isp2
#Flush the route cache to immediately apply the change
ip route flush cache
#enable forwarding
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 --to-source isp2.external.ip

Вы можете сделать это с помощью 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