LINUX.ORG.RU
ФорумAdmin

Несколько каналов в интернет с одним шлюзом


0

0

И так есть задача, несколько радио каналов в интернет по одному мегабиту, на стороне провайдера заведены в один свитч, в этот же свитч подключен провайдерский шлюз. Под каждый канал провайдер выдает настройки например
(1)ip 172.16.0.1 mask 255.255.255.0 gw 172.16.0.100
(2)ip 172.16.0.2 mask 255.255.255.0 gw 172.16.0.100
(3)ip 172.16.0.3 mask 255.255.255.0 gw 172.16.0.100
и делает у себя привязку IP к маку.

Задача использовать ресурсы всех каналов для предоставления доступа в интернет.

Теперь напишу, как реализовал это я.
Берем управляемый свитч D-link DES-3526, настраиваем VLAN (802.1Q)
VLAN_ID 2, port 1,24(port 24 taget)
VLAN_ID 3, port 3,24(port 24 taget)
VLAN_ID 4, port 4,24(port 24 taget)

Поднимаем VLAN'ы на Linux и на каждый VLAN интерфейс ставим свой MAC адрес.
=========================
IPADDR1="172.16.0.1"
IPADDR2="172.16.0.2"
IPADDR3="172.16.0.3"
MASK="255.255.255.0"
NETW="172.16.0.0/24"
BCAST="172.168.0.255"
GATEWAY="172.16.0.100"

modprobe 8021q
ifconfig eth0 down
ifconfig eth0 0.0.0.0 up
vconfig add eth0 2
vconfig add eth0 3
vconfig add eth0 4
ifconfig eth0.2 hw ether 00:01:02:11:11:11
ifconfig eth0.3 hw ether 00:01:02:11:11:12
ifconfig eth0.4 hw ether 00:01:02:11:11:13
ifconfig eth0.2 $IPADDR1 netmask $MASK broadcast $BCAST up
ifconfig eth0.3 $IPADDR2 netmask $MASK broadcast $BCAST up
ifconfig eth0.4 $IPADDR3 netmask $MASK broadcast $BCAST up

убираем автоматически создавшиеся пути роутинга для каждого интерфейса
которые можно наблюдать набрав ip route (с ними работать не будет)
172.16.0.0/24 dev eth0.2 proto kernel scope link src 172.16.0.1
172.16.0.0/24 dev eth0.3 proto kernel scope link src 172.16.0.2
172.16.0.0/24 dev eth0.4 proto kernel scope link src 172.16.0.3

Убираем 3-мя коммандами
ip route delete $NETW
ip route delete $NETW
ip route delete $NETW

Прописываем роутинг с поочередным использованием интерфейсов
ip route add default scope global nexthop via $GATEWAY dev eth0.2 weight 4 nexthop via $GATEWAY dev eth0.3 weight 4 nexthop via $GATEWAY dev eth0.4 weight 4

Вобщем-то все, подключаем три канала в первые три порта нашего свича, сервак вешаем на 24-ый порт.

Все работет, но есть один нюанс :)
Нет жесткой привязки исходящих от сервера пакетов MAC-IP, получается
что иногда под мак адресом первого интерфеса, выходит пакет со вторым IP адресом. По сути ни на что не влияет, т.к. привязка MAC-порт свича жесткая и каналы действительно используются.
Привязка у прова IP-MAC наши несоответствия не фильтрует, т.к. входящие пакеты она не пропускает через это правило. а только ставит указанный мак на исходящие.

Так вот вопрос можно как-нибудь сделать, чтобы пакеты с интерфесов шли со своими родными IP адресами?

anonymous

>> IPADDR1="172.16.0.1"
IPADDR2="172.16.0.2"
IPADDR3="172.16.0.3"

Это что Vlan-ы такие?
Все адреса из одной сети.

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

Да, абсолютно верно, все VLAN интерфейсы в одной подсети.

anonymous
()

iptables --table nat --append POSTROUTING --out-interface eth0.2 -j SNAT --to-source 172.16.0.1
iptables --table nat --append POSTROUTING --out-interface eth0.3 -j SNAT --to-source 172.16.0.2
iptables --table nat --append POSTROUTING --out-interface eth0.4 -j SNAT --to-source 172.16.0.3

(это теоретический вариант :)

SlavikSS ★★
()

Может я неправильно понял?

> Нет жесткой привязки исходящих от сервера пакетов MAC-IP, получается 
что иногда под мак адресом первого интерфеса, выходит пакет со вторым IP адресом.

Если пакет получается с мак-адресом от первого vlan'a и IP от другого vlan'a, то через какой интерфейс пакет уйдет?

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

а почему "теоретический вариант" не работает? вроде, должен.. И можно на субинтерфейсах разные мак адреса поставить? (я что-то не помню)

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

Если пакет получается с мак-адресом от первого vlan'a и IP от другого vlan'a, то через какой интерфейс пакет уйдет?

Через интерфейс первого.

Сам не знаю почему SNAT не подменяет IP, но факт что не подменяет, я пакеты слушаю снифером

и арп таблицу на стенде(где эмулировал гейт на несколько каналов) смотрел

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

а почему "теоретический вариант" не работает? вроде, должен.. Сам не знаю почему, может из-за того что я убил роутинг в таблице маршрутизации, который автоматом создается при создании интерфейса.

Мак на VLAN интерфейсах можно точно менять, проверено практикой.

anonymous
()

Протестируй каждый канал отдельно:
route add default gw 172.16.0.1 dev eth0.2
дай ping 172.16.0.100
потом следующий канал аналогично...
параллельно следи tcpdump'ом(или чем-то другим) правильно ли идут пакеты.

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

А не проще заюзать teql ?? - он объединяет интерфейсы в один и все. А на другом конце просто сделать trunk из 3-х портов - тоже объединить порты в один.

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