Перейти до

Шлюз - 2 провайдера. настройки


Рекомендованные сообщения

есть 2 провайдера, хочу настроить маршрутизацию

делаю по инструкции:

#!/bin/sh

IP_LOCAL="10.1.1.4" # адрес нашего маршрутизатора в локальной сети.
IP_INET1="хх.хх.хх.4" # адрес нашего маршрутизатора в сети первого провайдера.
IP_INET2="хх.хх.хх.234" # адрес нашего марщрутизатора в сети второго провайдера.

IF_LOCAL="eth3" # имя интерфейса на локальную сеть
IF_INET1="eth0" # имя интерфейса на первого провайдера.
IF_INET2="eth1" # имя интерфейса на второго провайдера.

NET_LOCAL="10.1.1.0/24" # локальная сеть.
NET_INET1="хх.хх.хх.0/29" # адрес сети в которой гейт нашего первого провайдера.
NET_INET2="хх.хх.хх.232/30" # адрес сети в которой гейт нашего второго провайдера.

GW_INET1="хх.хх.хх.1" # гейт первого провайдера.
GW_INET2="хх.хх.хх.233" # гейт второго провайдера.
IPT="/sbin/iptables"

ip rule delete table T1
ip rule delete table T2
ip route flush table T1><------><------>#обнуляем первую таблицу маршрутов
ip route flush table T2><------><------>#обнуляем вторую таблицу маршрутов
ip route del default


ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1<-->#закидываем в первую таблицу инфу о сети первого провайдера
ip route add $NET_LOCAL dev $IF_LOCAL table T1<><------><------>#закидываем в первую таблицу инфу о том, что у нас существует локальная сеть
ip route add $NET_INET2 dev $IF_INET2 table T1<><------><------>#закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть
ip route add 127.0.0.0/8 dev lo   table T1<----><------><------>#закидываем в первую таблицу инфу о существовании лупбека
ip route add default via $GW_INET1 table T1<---><------><------>#закидываем в первую таблицу дефолтный гейт на первого провайдера


ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table T2<-->#закидываем во вторую таблицу инфу о сети второго провайдера<-->
ip route add $NET_LOCAL dev $IF_LOCAL table T2<><------><------>#закидываем во вторую таблицу инфу о том, что у нас существует локальная сеть.
ip route add $NET_INET1 dev $IF_INET1 table T2<><------><------>#закидываем во вторую таблицу инфу о том, что у нас существует еще одна сеть.
ip route add 127.0.0.0/8 dev lo   table T2<----><------><------>#закидываем во вторую таблицу инфу о существовании лупбека.
ip route add default via $GW_INET2 table T2<---><------><------>#закидываем во вторую таблицу дефолтный гейт на второго провайдера

ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1<--->#заполняем основную таблицу адресов. сеть на первого провайдера
ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2<--->#заполняем основную таблицу адресов. сеть на второго провайдера

ip route add default via $GW_INET1<----><------><------>#заполняем основную таблицу адресов. дефолтный гейт.

ip rule delete table T1><------>#удаляем наши таблицы, если они присутсвуют в текущей конфигурации (вдруг мы просто перезапускаем скрипт?)
ip rule delete table T2><------>#аналогично для второй.
ip rule delete table T1><------>#и делаем это два раза, так как у нас два правила на каждую таблицу.
ip rule delete table T2><------>#аналогично для второй.

#а вот это важно для понимая! если понять что происходит в следующих строчках - то можно настраивать любые правила маршрутизации.
ip rule add from $IP_INET1 table T1<--->#все пакеты от ip адреса первого провайдера маршрутизировать по таблице T1
ip rule add from $IP_INET2 table T2<--->#все пакеты от ip адреса второго провайдера маршрутизировать по таблице T2

ip rule add fwmark 10 table T1<>#все пакеты, которые имеют метку 10 маршрутизировать по таблице T1
ip rule add fwmark 11 table T2<>#все пакеты, которые имеют метку 11 маршрутизировать по таблицу T2

ip route flush cache<--><------>#ну и на последок очистить кеш
exit

 

настраиваю файрвол:

#!/bin/bash

echo "1" > /proc/sys/net/ipv4/ip_forward

# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

iptables -t filter -A INPUT  -s 10.1.1.0/14 -j ACCEPT
iptables -t filter -A OUTPUT -d 10.1.1.0/14 -j ACCEPT
iptables -t filter -A FORWARD -d 10.1.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -s 10.1.1.0/24 -j ACCEPT

iptables -t filter -A FORWARD -j ACCEPT
iptables -t filter -A INPUT  -p icmp -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -d 0.0.0.0/0 -j MASQUERADE


iptables -t mangle -A PREROUTING  -d 77.88.21.6 -j MARK --set-mark 10 # яндекс 
iptables -t mangle -A PREROUTING  -d 77.88.21.3 -j MARK --set-mark 11 # яндекс 

#все пакеты, которые попали в цепочку POSTROUTING таблицы nat обрабатываем по двум правилам:
iptables -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE # натим все пакеты которые имеют метку
iptables -t nat -A POSTROUTING -m mark --mark 11 -j MASQUERADE # натим все пакеты которые имеют метку

 

это тестовые настройки, поэтому прошу не ругать за дырявость файрвола :D

 

делаю tracert 77.88.21.6 - все нормально - идет через 1 провайдера

делаю tracert 77.88.21.3 - идет через 2 провайдеда, но после гейта (хх.хх.хх.233) никуда не идет

в чем проблема, подскажите плиз

Ссылка на сообщение
Поделиться на других сайтах

есть 2 провайдера, хочу настроить маршрутизацию

делаю по инструкции:

#!/bin/sh

IP_LOCAL="10.1.1.4" # адрес нашего маршрутизатора в локальной сети.
IP_INET1="хх.хх.хх.4" # адрес нашего маршрутизатора в сети первого провайдера.
IP_INET2="хх.хх.хх.234" # адрес нашего марщрутизатора в сети второго провайдера.

IF_LOCAL="eth3" # имя интерфейса на локальную сеть
IF_INET1="eth0" # имя интерфейса на первого провайдера.
IF_INET2="eth1" # имя интерфейса на второго провайдера.

NET_LOCAL="10.1.1.0/24" # локальная сеть.
NET_INET1="хх.хх.хх.0/29" # адрес сети в которой гейт нашего первого провайдера.
NET_INET2="хх.хх.хх.232/30" # адрес сети в которой гейт нашего второго провайдера.

GW_INET1="хх.хх.хх.1" # гейт первого провайдера.
GW_INET2="хх.хх.хх.233" # гейт второго провайдера.
IPT="/sbin/iptables"

ip rule delete table T1
ip rule delete table T2
ip route flush table T1><------><------>#обнуляем первую таблицу маршрутов
ip route flush table T2><------><------>#обнуляем вторую таблицу маршрутов
ip route del default


ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1 table T1<-->#закидываем в первую таблицу инфу о сети первого провайдера
ip route add $NET_LOCAL dev $IF_LOCAL table T1<><------><------>#закидываем в первую таблицу инфу о том, что у нас существует локальная сеть
ip route add $NET_INET2 dev $IF_INET2 table T1<><------><------>#закидываем в первую таблицу инфу о том, что у нас существует еще одна сеть
ip route add 127.0.0.0/8 dev lo   table T1<----><------><------>#закидываем в первую таблицу инфу о существовании лупбека
ip route add default via $GW_INET1 table T1<---><------><------>#закидываем в первую таблицу дефолтный гейт на первого провайдера


ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2 table T2<-->#закидываем во вторую таблицу инфу о сети второго провайдера<-->
ip route add $NET_LOCAL dev $IF_LOCAL table T2<><------><------>#закидываем во вторую таблицу инфу о том, что у нас существует локальная сеть.
ip route add $NET_INET1 dev $IF_INET1 table T2<><------><------>#закидываем во вторую таблицу инфу о том, что у нас существует еще одна сеть.
ip route add 127.0.0.0/8 dev lo   table T2<----><------><------>#закидываем во вторую таблицу инфу о существовании лупбека.
ip route add default via $GW_INET2 table T2<---><------><------>#закидываем во вторую таблицу дефолтный гейт на второго провайдера

ip route add $NET_INET1 dev $IF_INET1 src $IP_INET1<--->#заполняем основную таблицу адресов. сеть на первого провайдера
ip route add $NET_INET2 dev $IF_INET2 src $IP_INET2<--->#заполняем основную таблицу адресов. сеть на второго провайдера

ip route add default via $GW_INET1<----><------><------>#заполняем основную таблицу адресов. дефолтный гейт.

ip rule delete table T1><------>#удаляем наши таблицы, если они присутсвуют в текущей конфигурации (вдруг мы просто перезапускаем скрипт?)
ip rule delete table T2><------>#аналогично для второй.
ip rule delete table T1><------>#и делаем это два раза, так как у нас два правила на каждую таблицу.
ip rule delete table T2><------>#аналогично для второй.

#а вот это важно для понимая! если понять что происходит в следующих строчках - то можно настраивать любые правила маршрутизации.
ip rule add from $IP_INET1 table T1<--->#все пакеты от ip адреса первого провайдера маршрутизировать по таблице T1
ip rule add from $IP_INET2 table T2<--->#все пакеты от ip адреса второго провайдера маршрутизировать по таблице T2

ip rule add fwmark 10 table T1<>#все пакеты, которые имеют метку 10 маршрутизировать по таблице T1
ip rule add fwmark 11 table T2<>#все пакеты, которые имеют метку 11 маршрутизировать по таблицу T2

ip route flush cache<--><------>#ну и на последок очистить кеш
exit

 

настраиваю файрвол:

#!/bin/bash

echo "1" > /proc/sys/net/ipv4/ip_forward

# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

iptables -t filter -A INPUT  -s 10.1.1.0/14 -j ACCEPT
iptables -t filter -A OUTPUT -d 10.1.1.0/14 -j ACCEPT
iptables -t filter -A FORWARD -d 10.1.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -s 10.1.1.0/24 -j ACCEPT

iptables -t filter -A FORWARD -j ACCEPT
iptables -t filter -A INPUT  -p icmp -j ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -d 0.0.0.0/0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -d 0.0.0.0/0 -j MASQUERADE


iptables -t mangle -A PREROUTING  -d 77.88.21.6 -j MARK --set-mark 10 # яндекс 
iptables -t mangle -A PREROUTING  -d 77.88.21.3 -j MARK --set-mark 11 # яндекс 

#все пакеты, которые попали в цепочку POSTROUTING таблицы nat обрабатываем по двум правилам:
iptables -t nat -A POSTROUTING -m mark --mark 10 -j MASQUERADE # натим все пакеты которые имеют метку
iptables -t nat -A POSTROUTING -m mark --mark 11 -j MASQUERADE # натим все пакеты которые имеют метку

 

это тестовые настройки, поэтому прошу не ругать за дырявость файрвола :D

 

делаю tracert 77.88.21.6 - все нормально - идет через 1 провайдера

делаю tracert 77.88.21.3 - идет через 2 провайдеда, но после гейта (хх.хх.хх.233) никуда не идет

в чем проблема, подскажите плиз

 

Если адреса статика, то зачем маскарад? почему не нат? зачем маскарадить промаркированные? На выходах с езеров 0 и 1 все маскарадится. ИМХО в 2-х последних строчках нет смысла.

Ссылка на сообщение
Поделиться на других сайтах

Если адреса статика, то зачем маскарад? почему не нат? зачем маскарадить промаркированные? На выходах с езеров 0 и 1 все маскарадится. ИМХО в 2-х последних строчках нет смысла.

переделал файрвол так:

#!/bin/bash

echo "1" > /proc/sys/net/ipv4/ip_forward

# Очищаем правила файрвола
iptables -t filter -F
iptables -t filter -X
iptables -t nat -F
iptables -t nat -X

# Политика по умолчанию DROP: всем всё запрещено
iptables -t filter -P INPUT ACCEPT
iptables -t filter -P FORWARD ACCEPT
iptables -t filter -P OUTPUT ACCEPT

iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT

iptables -t filter -A INPUT  -s 10.1.1.0/14 -j ACCEPT
iptables -t filter -A OUTPUT -d 10.1.1.0/14 -j ACCEPT
iptables -t filter -A FORWARD -d 10.1.1.0/24 -j ACCEPT
iptables -t filter -A FORWARD -s 10.1.1.0/24 -j ACCEPT

iptables -t filter -A FORWARD -j ACCEPT
iptables -t filter -A INPUT  -p icmp -j ACCEPT


iptables -t mangle -A PREROUTING  -d 77.88.21.6 -j MARK --set-mark 10 # яндекс 
iptables -t mangle -A PREROUTING  -d 77.88.21.3 -j MARK --set-mark 11 # яндекс 

#все пакеты, которые попали в цепочку POSTROUTING таблицы nat обрабатываем по двум правилам:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # натим все пакеты которые имеют метку
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # натим все пакеты которые имеют метку

 

Эффект тот же ;)

Ссылка на сообщение
Поделиться на других сайтах
  • 2 weeks later...

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Вхід

Уже зарегистрированы? Войдите здесь.

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...