URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9971
[ Назад ]

Исходное сообщение
"ip route ifconfig alias"

Отправлено tnega , 03-Фев-15 09:54 
Приветствую Всех!

Имеем шлюз!

Подключены к провайдеру НетВуНет :-) технология так называемае Ipoe, выдается белый ип по dhcp.

заметили одну очень интересную особенность, вставляем их кабель в обычный неуправляемый коммутатор, подсоединяем несколько машин и видим, что у всех них выдался разный белый айпишник и они могут свободно пользоваться интернетом.

Решили организовать данную технологию на шлюзе:

ip link add link eth0 name eth2 address 00:00:00:00:00:01 type macvlan
ip link add link eth0 name eth3 address 00:00:00:00:00:02 type macvlan
ip link add link eth0 name eth4 address 00:00:00:00:00:03 type macvlan

dhclient eth2
dhclient eth3
dhclient eth4

Интерфейсы поднимаются, пинги идут.

Хотим подсадить пользователя на один из каналов:

ip route add default dev eth4 table eth4
ip rule add from 10.10.1.1/32 table eth4

и в итоге у пользователя ничего нет :-(

если посадим его на первый интерфейс поднятый (eth0) - все ОК.

в чем может быть причина?

Вывод команды ip route

default dev eth0  scope link
176.194.128.0/18 dev eth2  proto kernel  scope link  src 176.194.158.202
176.194.128.0/18 dev eth3  proto kernel  scope link  src 176.194.151.33
176.194.128.0/18 dev eth4  proto kernel  scope link  src 176.194.152.4

кстати, при traceroute через алиас интерфейсы я вижу первым шлюзом в цепочке шлюз eth0


Содержание

Сообщения в этом обсуждении
"ip route ifconfig alias"
Отправлено PavelR , 03-Фев-15 11:32 
> Приветствую Всех!
> Имеем шлюз!

великолепно.

> Решили организовать данную технологию на шлюзе:

Что мешает всё также и далее пользоваться обычным неуправляемым коммутатором?

> Хотим подсадить пользователя на один из каналов:

1) У вас _один_ канал. Вы ошибаетесь, думая, что у вас "несколько каналов".
2) На самом деле у вас проблемы с пониманием, чего же именно вы хотите. Вы хотите не этого. Канал-то один.

> в чем может быть причина?

1) В том, что вы делаете непонятно что, и не понимаете, что именно вы делаете.
2) Не пользуетесь tcpdump с ключом -e.

> Вывод команды ip route

... нам абсолютно бесполезен.

> кстати, при traceroute через алиас интерфейсы я вижу первым шлюзом в цепочке
> шлюз eth0

Всё так и должно быть :-)

Еще раз повторю вопрос: что мешает пользоваться обычным коммутатором?


"ip route ifconfig alias"
Отправлено tnega , 03-Фев-15 11:39 
хотелось бы шейпить трафик на интерфейсах, ограничивать скорость.
я понимаю, что канал один, но ип адреса выдаются ведь разные.

хочется иметь контроль пользователей на программном уровне, а не только на физическом, отключая из коммутатора абонентов.

просто видим для себя большой плюс в том, что выдаются динамические белые ип адреса.

проблему решил :-) спасибо за отклик!
я забыл включить маскардинг на интерфейсах :-)


"ip route ifconfig alias"
Отправлено PavelR , 03-Фев-15 12:07 
> просто видим для себя большой плюс в том, что выдаются динамические белые
> ип адреса.

(1)

> я забыл включить маскардинг на интерфейсах :-)

(2)


Как-то не заметно, что _клиентам_ выдаются _белые_ адреса. )


"ip route ifconfig alias"
Отправлено tnega , 03-Фев-15 12:18 
>> просто видим для себя большой плюс в том, что выдаются динамические белые
>> ип адреса.
> (1)
>> я забыл включить маскардинг на интерфейсах :-)
> (2)
> Как-то не заметно, что _клиентам_ выдаются _белые_ адреса. )

делаю весь проброс портов и вуаля :-)
клиент получает серый ип конечно, но порты при пробрасываются все :-)

пока только так умеем. может быть Вы можете показать альтернативный способ?


"ip route ifconfig alias"
Отправлено PavelR , 03-Фев-15 17:44 
>>> просто видим для себя большой плюс в том, что выдаются динамические белые
>>> ип адреса.
>> (1)
>>> я забыл включить маскардинг на интерфейсах :-)
>> (2)
>> Как-то не заметно, что _клиентам_ выдаются _белые_ адреса. )
> делаю весь проброс портов и вуаля :-)
> клиент получает серый ип конечно, но порты при пробрасываются все :-)
> пока только так умеем. может быть Вы можете показать альтернативный способ?

не совсем применимо к вашей схеме, но думаю можно допилить.
Ключевые моменты:

1) Публикация мак-адреса белого айпи на внешнем интерфейсе
/usr/sbin/arp -i eth0 -Ds $IP eth0 pub

В вашем случае надо публиковать нужный мак, у меня публикуется тот же что и у интерфейса.

( Команда удаления: /usr/sbin/arp -i br0 -d $IP pub )

Следствие: провайдер видит айпи в таблице мак адресов, шлет на него трафик.
Таким образом трафик к $IP попадает на ваш сетевой интерфейс маршрутизатора.

2) Прописываем на роутере маршрут к белому айпи.

Тут нюансы.

ip route add ${addr} dev ${vif} src ${main_ip}

Это работает если интерфейс точка-точка (на виртуалках).

На физической сети как работает - не знаю, может не захотеть делать ARP-запрос.

Можно сделать маршрут на серый айпи, а белый на хосте прописать алиасом (или наоброт) (на винде это элементарно).

ip route add $WHITEIP via $GREYIP

На линуксах еще более элементарно делается белый айпи и серый адрес роутера (если мне не изменяет память ;-)

Возможно, сработает принудительное добавление мак-адреса в таблицу на роутере.

Обычно кучу сложностей на этом пути можно решить включением proxy_arp на интерфейсах.
Но мне кажется, что где-то оно работало и без него. Хотя, возможно в каком-то случае клиенты не могли друг друга видеть, но мне этого особо было и не нужно.

В общем суть схемы - настроить маршрутизацию и сделать либо proxy_arp либо вручную расставить нужные значения в arp-таблицы (свою и вышестоящего роутера).

По таким схемам я пробрасывал штучные реальные IP-адреса на сервера во внутренней сети, таким же образом без использования бриджей выдаются штучные реальные IP на виртуалки.

tcpdump вам в помощь.


"ip route ifconfig alias"
Отправлено tnega , 03-Фев-15 19:12 
Спасибо большое за консультации! Ваши мысли понял, буду пробовать!
Спасибо за отзывчивость и грамотное объяснение.