Приветствую Всех!Имеем шлюз!
Подключены к провайдеру НетВуНет :-) технология так называемае 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 macvlandhclient 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
> Приветствую Всех!
> Имеем шлюз!великолепно.
> Решили организовать данную технологию на шлюзе:
Что мешает всё также и далее пользоваться обычным неуправляемым коммутатором?
> Хотим подсадить пользователя на один из каналов:
1) У вас _один_ канал. Вы ошибаетесь, думая, что у вас "несколько каналов".
2) На самом деле у вас проблемы с пониманием, чего же именно вы хотите. Вы хотите не этого. Канал-то один.> в чем может быть причина?
1) В том, что вы делаете непонятно что, и не понимаете, что именно вы делаете.
2) Не пользуетесь tcpdump с ключом -e.> Вывод команды ip route
... нам абсолютно бесполезен.
> кстати, при traceroute через алиас интерфейсы я вижу первым шлюзом в цепочке
> шлюз eth0Всё так и должно быть :-)
Еще раз повторю вопрос: что мешает пользоваться обычным коммутатором?
хотелось бы шейпить трафик на интерфейсах, ограничивать скорость.
я понимаю, что канал один, но ип адреса выдаются ведь разные.хочется иметь контроль пользователей на программном уровне, а не только на физическом, отключая из коммутатора абонентов.
просто видим для себя большой плюс в том, что выдаются динамические белые ип адреса.
проблему решил :-) спасибо за отклик!
я забыл включить маскардинг на интерфейсах :-)
> просто видим для себя большой плюс в том, что выдаются динамические белые
> ип адреса.(1)
> я забыл включить маскардинг на интерфейсах :-)
(2)
Как-то не заметно, что _клиентам_ выдаются _белые_ адреса. )
>> просто видим для себя большой плюс в том, что выдаются динамические белые
>> ип адреса.
> (1)
>> я забыл включить маскардинг на интерфейсах :-)
> (2)
> Как-то не заметно, что _клиентам_ выдаются _белые_ адреса. )делаю весь проброс портов и вуаля :-)
клиент получает серый ип конечно, но порты при пробрасываются все :-)пока только так умеем. может быть Вы можете показать альтернативный способ?
>>> просто видим для себя большой плюс в том, что выдаются динамические белые
>>> ип адреса.
>> (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 вам в помощь.
Спасибо большое за консультации! Ваши мысли понял, буду пробовать!
Спасибо за отзывчивость и грамотное объяснение.