LINUX.ORG.RU
ФорумAdmin

Два интернет провайдера


0

0

Здравствуйте!
К компьютеру подключено два интернет провайдера и локалка, при получении ip адреса в iptables появляется
Chain chain_192.168.182.3 (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

Необходимо выбирать через какого провайдера его пускать через IP1 или IP2, причем всем дать разных провайдеров как это реализовать?
Вот доп инфа:
dev32715-IP2
eth0-IP1
tun0- локалка
#route
Destination Gateway Genmask Flags Metric Ref Use Iface
шлюздляIP1 * 255.255.255.252 U 0 0 0 eth0
шлюздляIP2 * 255.255.255.248 U 0 0 0 dev32715
192.168.182.0 * 255.255.255.0 U 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 dev32715
default шлюздляIP1 0.0.0.0 UG 0 0 0 eth0
При добавлении шлюза для IP2 как default из локалки в интернет не выйти,
#iptables -L

IPT=/sbin/iptables
$IPT -t nat -A POSTROUTING -o dev32715 -j MASQUARDE
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPT -t nat -A POSTROUTING -o tun0 -j MASQUERADE
$IPT -A FORWARD -s 192.168.1.20 -j ACCEPT
$IPT -A FORWARD -d 192.168.1.20 -j ACCEPT
$IPT -A FORWARD -s 85.91.97.202 -j ACCEPT
$IPT -A FORWARD -d 85.91.97.202 -j ACCEPT
$IPT -A FORWARD -s 85.91.112.154 -j ACCEPT
$IPT -A FORWARD -d 85.91.112.154 -j ACCEPT
$IPT -A FORWARD -d 84.47.177.77 -j ACCEPT
$IPT -A FORWARD -s 84.47.177.77 -j ACCEPT
$IPT -A FORWARD -d 85.91.99.99 -j ACCEPT
$IPT -A FORWARD -s 85.91.99.99 -j ACCEPT

$IPT -P FORWARD ACCEPT

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

Здравствуйте!
К компьютеру подключено два интернет провайдера и локалка, при получении ip адреса в iptables появляется
Chain chain_192.168.182.3 (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

Необходимо выбирать через какого провайдера его пускать через IP1 или IP2, причем всем дать разных провайдеров как это реализовать?
Вот доп инфа:
dev32715-IP2
eth0-IP1
tun0- локалка
#route
Destination Gateway Genmask Flags Metric Ref Use Iface
шлюздляIP1 * 255.255.255.252 U 0 0 0 eth0
шлюздляIP2 * 255.255.255.248 U 0 0 0 dev32715
192.168.182.0 * 255.255.255.0 U 0 0 0 tun0
169.254.0.0 * 255.255.0.0 U 0 0 0 dev32715
default шлюздляIP1 0.0.0.0 UG 0 0 0 eth0
При добавлении шлюза для IP2 как default из локалки в интернет не выйти,
#iptables -L

IPT=/sbin/iptables
$IPT -t nat -A POSTROUTING -o dev32715 -j MASQUARDE
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE
$IPT -t nat -A POSTROUTING -o tun0 -j MASQUERADE
$IPT -A FORWARD -s 192.168.1.20 -j ACCEPT
$IPT -A FORWARD -d 192.168.1.20 -j ACCEPT
$IPT -A FORWARD -s IP1 -j ACCEPT
$IPT -A FORWARD -d IP1 -j ACCEPT
$IPT -A FORWARD -s IP2 -j ACCEPT
$IPT -A FORWARD -d IP2 -j ACCEPT


$IPT -P FORWARD ACCEPT

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

anonymous
()
Ответ на: комментарий от Reset

А в Iptables для каждого ip какие правила нужны?
А в iproute2 можно задать два дефолт шлюза??

Dronnikkl
() автор топика
Ответ на: комментарий от Dark_Sarmat

> Насколько я знаю 1 маршрутизатор контролирует только 1 прова

вызывающе неверная информация :) так-что man iproute2

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

если tun0 - локалка, то $IPT -t nat -A POSTROUTING -o tun0 -j MASQUERADE __ЛИШНЕЕ__!!!!

> всем дать разных провайдеров..

то есть одним одного проваёдера, другим другого ?

тогда на уровне iptables разбирать признаки, кому куда, ставить метку и при выборе маршрута ориентироваться на метку.

MKuznetsov ★★★★★
()
Ответ на: комментарий от anonymous

без route обоётись нельзя :) вы же маршрутизацией занимаетесь ? как ставить метку - man iptables на тему --set-mark и таблицы MANGLE, что читать по поводу маршрутизации уже говорили в ветке

MKuznetsov ★★★★★
()
Ответ на: комментарий от MKuznetsov

Попробавал сделать с помощью скрита роутинг: #!/bin/sh

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

IF_LOCAL="tun0" # имя интерфейса на локальную сеть

IF_INET1="eth0" # имя интерфейса на первого провайдера. IF_INET2="dev32715" # имя интерфейса на второго провайдера.

NET_LOCAL="" # локальная сеть.

NET_INET1="" # адрес сети в которой гейт нашего первого провайдера. NET_INET2="" # адрес сети в которой гейт нашего второго провайдера.

GW1="85.91.97.201" # гейт первого провайдера. GW2="85.91.112.153" # гейт второго провайдера.

ip route flush table T1 #обнуляем первую таблицу маршрутов ip route flush table T2 #обнуляем вторую таблицу маршрутов

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 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 0

Затем при подключении изеру дается новая цепочка и с ней прописываю $netlocal="192.168.0.0/16"; $netsub="192.168.0.0/16"; exec("/sbin/iptables -N chain_$ip"); exec("/sbin/iptables -A chain_$ip -j RETURN"); exec("/sbin/iptables -A FORWARD -o tun0 -d $ip -j chain_$ip"); exec("/sbin/iptables -t mangle -A PREROUTING -s $netsub2 -d ! $netlocal -j MARK --set-mark 11"); А до это прописал в файле /etc/iproute2/rt_tables

# # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 10 T1 20 T2 Но всеравно все выходят через $ip1 В чем проблема??

anonymous
()
Ответ на: комментарий от anonymous

Попробавал сделать с помощью скрита роутинг: #!/bin/sh

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

IF_LOCAL="tun0" # имя интерфейса на локальную сеть

IF_INET1="eth0" # имя интерфейса на первого провайдера. IF_INET2="dev32715" # имя интерфейса на второго провайдера.

NET_LOCAL="" # локальная сеть.

NET_INET1="" # адрес сети в которой гейт нашего первого провайдера. NET_INET2="" # адрес сети в которой гейт нашего второго провайдера.

GW1="85.91.97.201" # гейт первого провайдера. GW2="85.91.112.153" # гейт второго провайдера.

ip route flush table T1 #обнуляем первую таблицу маршрутов ip route flush table T2 #обнуляем вторую таблицу маршрутов

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 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 0

Затем при подключении изеру дается новая цепочка и с ней прописываю $netlocal="192.168.0.0/16"; $netsub="192.168.0.0/16"; exec("/sbin/iptables -N chain_$ip"); exec("/sbin/iptables -A chain_$ip -j RETURN"); exec("/sbin/iptables -A FORWARD -o tun0 -d $ip -j chain_$ip"); exec("/sbin/iptables -t mangle -A PREROUTING -s $netsub2 -d ! $netlocal -j MARK --set-mark 11"); А до это прописал в файле /etc/iproute2/rt_tables

# # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep 10 T1 20 T2 Но всеравно все выходят через $ip1 В чем проблема??

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.