dummy 8 Опубликовано: 2011-05-02 08:38:34 Share Опубликовано: 2011-05-02 08:38:34 есть 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 # натим все пакеты которые имеют метку это тестовые настройки, поэтому прошу не ругать за дырявость файрвола делаю tracert 77.88.21.6 - все нормально - идет через 1 провайдера делаю tracert 77.88.21.3 - идет через 2 провайдеда, но после гейта (хх.хх.хх.233) никуда не идет в чем проблема, подскажите плиз Ссылка на сообщение Поделиться на других сайтах
twg 871 Опубліковано: 2011-05-02 10:16:55 Share Опубліковано: 2011-05-02 10:16:55 есть 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 # натим все пакеты которые имеют метку это тестовые настройки, поэтому прошу не ругать за дырявость файрвола делаю tracert 77.88.21.6 - все нормально - идет через 1 провайдера делаю tracert 77.88.21.3 - идет через 2 провайдеда, но после гейта (хх.хх.хх.233) никуда не идет в чем проблема, подскажите плиз Если адреса статика, то зачем маскарад? почему не нат? зачем маскарадить промаркированные? На выходах с езеров 0 и 1 все маскарадится. ИМХО в 2-х последних строчках нет смысла. Ссылка на сообщение Поделиться на других сайтах
dummy 8 Опубліковано: 2011-05-04 14:56:47 Автор Share Опубліковано: 2011-05-04 14:56:47 Если адреса статика, то зачем маскарад? почему не нат? зачем маскарадить промаркированные? На выходах с езеров 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 # натим все пакеты которые имеют метку Эффект тот же Ссылка на сообщение Поделиться на других сайтах
tokezo 5 Опубліковано: 2011-05-04 16:52:44 Share Опубліковано: 2011-05-04 16:52:44 Настраивал примерно по этой статье.Очень удобно тк при падении инета у провайдера трафик через него не побежит. Ссылка на сообщение Поделиться на других сайтах
dummy 8 Опубліковано: 2011-05-16 14:00:09 Автор Share Опубліковано: 2011-05-16 14:00:09 все настройки рабочие только надо net.ipv4.conf.eth0.rp_filter = 0 для всех интерфейсов в sysctl.conf и все Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас