В linux относительно давно появилась такая замечательная вещь, как неймспейсы (namespaces). Основное применение данной технологии - контейнерная виртуализация, но и на маршрутзаторе можно придумать много разных применений, так как среди неймспейсов есть "network namespaces".Network namespaces позволяют в рамках одной машины в каждом неймспейсе иметь:
** свой набор таблиц маршрутизации (а их 2^31-1 шт)
** свою arp-таблицу
** свои правила iptables
** свои устройства (а значит и qdisc + class'ы tc)NB: для выполнения нижеследующих примеров крайне желательно иметь свежий iproute2 и ядро.
Создаются неймспейсы достаточно скучно и просто:
ip netns add VROUTER
ip netns add KUKYSEVRACIСоздадим "виртуальны шнурок":
ip link add name ve0a type veth peer name ve0b
Добавим интерфейсы внутрь VROUTER:
ip link set dev eth0 netns VROUTER
ip link set dev ve0b netns VROUTERВыполнить команду в контексте определённого неймспейса можно так:
ip netns exec VROUTER ip link show
Настроим адреса:
ip netns exec VROUTER ip a a 192.168.1.1/24 dev ve0b
ip a a 192.168.1.2/24 dev ve0a
ip netns exec VROUTER ip a a 10.140.48.16/24 dev eth0Поднимем интерфейсы:
ip link set dev ve0a up
ip netns exec VROUTER ip link set dev eth0 up
ip netns exec VROUTER ip link set dev ve0b upШлюз по умолчанию:
ip netns exec VROUTER ip r a default via 10.140.48.1
Посмотрим, что получилось:
root@laptus:~# ip netns exec VROUTER ip r s
default via 10.140.48.1 dev eth0
10.140.48.0/24 dev eth0 proto kernel scope link src 10.140.48.16
192.168.1.0/24 dev ve0b proto kernel scope link src 192.168.1.1Добавим NAT:
ip netns exec VROUTER iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 10.140.48.16
Сделаем пару трейсов:
root@laptus:~# ip netns exec VROUTER traceroute -q 1 -I opennet.ru
traceroute to opennet.ru (77.234.201.242), 30 hops max, 60 byte packets
1 10.140.48.1 (10.140.48.1) 0.148 ms
2 10.140.0.1 (10.140.0.1) 0.245 ms
3 border.yournet.ru (91.204.148.17) 0.436 ms
4 alisa.yournet.ru (91.204.151.2) 0.521 ms
5 sev-gw.yournet.ru (91.204.148.2) 8.975 ms
6 bl16-1-gw.spb.runnet.ru (194.190.255.25) 1.321 ms
7 bl16-1-gw.spb.runnet.ru (194.85.40.170) 1.785 ms
8 s14-1-gw.spb.runnet.ru (194.85.40.81) 1.456 ms
9 vuztc.spb.runnet.ru (194.190.255.170) 1.987 ms
10 opennet.ru (77.234.201.242) 2.395 msroot@laptus:~# traceroute -q 1 -I opennet.ru
traceroute to opennet.ru (77.234.201.242), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.094 ms
2 10.140.48.1 (10.140.48.1) 0.751 ms
3 10.140.0.1 (10.140.0.1) 1.277 ms
4 border.yournet.ru (91.204.148.17) 2.061 ms
5 alisa.yournet.ru (91.204.151.2) 2.911 ms
6 sev-gw.yournet.ru (91.204.148.2) 6.770 ms
7 bl16-1-gw.spb.runnet.ru (194.190.255.25) 3.622 ms
8 bl16-1-gw.spb.runnet.ru (194.85.40.170) 5.262 ms
9 s14-1-gw.spb.runnet.ru (194.85.40.81) 4.135 ms
10 vuztc.spb.runnet.ru (194.190.255.170) 4.710 ms
11 opennet.ru (77.234.201.242) 7.220 msURL:
Обсуждается: http://www.opennet.me/tips/info/2683.shtml
вот спасибо!
а какая практическая польза?
что-то типа VRF?
Привязывать netns-ы к контейнерам и создавать сети из виртуалок при практически нулевом оверхеде.
контейнеры и используют netns'ы. но иногда достаточно просто сетевых неймспейсов, без изоляции процессов.
> а какая практическая польза?Виртуальные роутеры в виртуальной инфраструктуре - самое оно если полнял пачку виртуалок в LXC, а тут как раз и сетку между ними можно нарулить.
FAAS, нэ?
СтЭков?
http://cryptanalysis.ru/hash-flash/
> http://cryptanalysis.ru/hash-flash/Не авторитет.
http://gramota.ru/slovari/dic/?lop=x&bts=x&zar=x&ag=x&ab=x&s...И не надо теперь всё в кучу валить.
Мой маленький любитель русского языка, не надо пытаться казаться умнее, чем ты есть на самом деле. Со стороны выглядит довольно пафосно и глупо.В предложенном тебе документе каждый тезис снабжен ссылкой на один из общепризнанных словарей русского языка, в частности на то же gramota.ru, который ты так любишь. Глупо обвинять оппонента в неавторитетности источника, если ты сам на него ссылаешься.
Кроме того, документ рассматривает контекст явления, разбирает и обобщает правила использования, т.е. документ является методологическим. Ты же, видимо, кроме ЕГЭ ничего не видел, поэтому для решения проблемы предлагаешь использовать фактологию заместо методологии.
Эффект предсказуем: в следующий раз ты опять пойдешь искать на gramota.ru как же пишется другое слово, через "е" или через "э". Другие же, зная правило, просто напишут слово правильно. А то, что ты по недомыслию называешь "кучей", является правилом русского языка.
Так что не авторитет тут - это ты сам.
С приветом, твой КО.
Мальчики, не ссорьтесь (ц) -- с заимствованиями и так сложней, чем кажется.PS: пишу "стек", точную причину указать затрудняюсь.
Анонист два, сразу видно, что ты-то как раз и не знаешь.
Мой русский "вдолблен" учителями СССР, огромным количеством книг, которые читаю и до сих пор.
А "маленьким" я могу быть разве что рядом с твоим дедом...
root@localhost:/tmp# ip netns
Object "netns" is unknown, try "ip help".
root@localhost:/tmp# ip -V
ip utility, iproute2-ss110317
root@localhost:/tmp# uname -a
Linux localhost 3.0.0-17-generic #30-Ubuntu SMP Thu Mar 8 20:45:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
> root@localhost:/tmp# ip netns
> Object "netns" is unknown, try "ip help".
> root@localhost:/tmp# ip -V
> ip utility, iproute2-ss110317Спрашивайте в магазинах города... PPA?
$ ip -V
ip utility, iproute2-ss100519
$ ip netns
Object "netns" is unknown, try "ip help".
$ ip -V
ip utility, iproute2-ss120319
$ ip netns
$ _Я просто пересобрал pbuilder-ом из unstable в stable [--Debian]. И нет, совет выше не проверял, только собрал-установил.
> Спрашивайте в магазинах города... PPA?Автором не поддерживается.
Собрать я, конечно, собрал, но... Суть не в этом: быстро пробежавшись по всем своим Linux-устройствам, я нигде не нашел версии iproute2 с netns. Не отрицая того, что это здорово, и нужно, всё же стоит иметь в виду, что не везде это будет "из коробки", и не везде это вообще будет работать (linux-роутеры на старых версиях ядра, и т.д.).
PS: Вот как вернуть в "основной" namespace физическое устройство после
ip link set dev eth0 netns VROUTER
ip netns delete VROUTER
- я не понял.Пока netns VROUTER не удалён, в нём можно сделать:
ip netns exec VROUTER bash
ip link set dev DEV netns 1
>не везде это будет "из коробки", и не везде это вообще будет работатьтак это ж линукс, тут это как бы фича.
не прошло и 19 (девятнадцати) лет....
http://plan9.bell-labs.com/sys/doc/names.html
http://man.cat-v.org/plan_9/4/namespacelo0nix is SO slow....
http://man.cat-v.org/plan_9/6/namespace же!
> http://man.cat-v.org/plan_9/6/namespace же!Надеюсь что вы такие умные хотя-бы юзаете этот ваш план9 :)
> не прошло и 19 (девятнадцати) лет....Пускай секундомер -- через сколько оно в винде будет!?
юморист.
Лучше засеките время, когда в винде нормально vlan'ами можно будет рулить.
Подозреваю что никогда, а если и можно будет, это технологически будет уже не винда :)
через сколько лет появится drdb в plan?
анон фигню не пори
> lo0nix is SO slow....plan9 is s0o al1v3 and s00o uzzaabl3ee....
> не прошло и 19 (девятнадцати) лет....
> http://plan9.bell-labs.com/sys/doc/names.html
> http://man.cat-v.org/plan_9/4/namespace
> lo0nix is SO slow....На скольки серверах он у вас установлен?
В соответствии с идеологией, как минимум на трех виртуальных: cpu, file-backed и консоль. ;)
Вопрос немножко не в тему, но пересекается.
Можно ли виртуальные консоли vcsX засунуть в пространства имён и привязать к различным физическим устройствам (видеокартам, клавам) ?
> Вопрос немножко не в тему, но пересекается.
> Можно ли виртуальные консоли vcsX засунуть в пространства имён и привязать к
> различным физическим устройствам (видеокартам, клавам) ?Возможно, google://терминал+горыныч поможет.
Ещё не в тему, но с другой стороны: для инфраструктуры с VM на нескольких хостах может пригодиться http://openvswitch.org.
>> Можно ли виртуальные консоли vcsX засунуть в пространства имён и привязать к
>> различным физическим устройствам (видеокартам, клавам) ?Наверное, уже (почти?!!) можно. Вот запилит кто-нибудь...............
В принципе, пустить getty/login на tty$N вообще не проблема. Вот привязать к этому tty$N комплект vga$M + kbd$X + mouse$Y... в т.ч. решить, какие из нескольких $M/$X/$Y/... по-парно/по-$n-но объединять, да ещё, кста, выяснить (и допилить), работает ли ядро с таким "мейнфреймом" внутри ПЦ. (Datalink, или как их там?, изящно объединяли наборы K+V+M путём подвешивания _всех трёх (vga в т.ч.!) на _один USB хаб -- и ловлей их на одной "ветке" дерева устройств). Но народ же B)требует +1usb-kbd+1usb-мышь на вон тот _свободный (второй, третий...) выход набортного/внутреннего/втрого-PCI-ного/... VGA! . . . . . [Ждём ебил^Wгероев!]> Возможно, google://терминал+горыныч поможет.
+G://multiseat+site:opennet.ru
Кстати, аноним дело говорит. Неймспейсы в применении к мультиситу -- новое слово-таки. К сожалению, _могло _бы _быть. Насколько мне причудилось, там есть две (минимум?) проблемы: uid нейспейсов (разделения пользователей, в т.ч. root-ов) не случилось, н.с. их авторами числятся как "ни-ни, не дай $deity, не механизм безопасности ни разу"... То есть поломка хоста недружелюмным обитателем контейнера -- реальная угроза безопасноти. Видимо? ... Хотя с другой стороны, если не упираться рогом в полное разделение, и делать одного root-а и базу/спейс uid-ов, то, наверное, мульти-сит, подпёртый неймспейсами (только, видимо, не сетевыми, а "консольные" нужны; впрочем, сетевые н.с. могут сыграть роль "персонального файервола"), ничем не хуже какого-нибудь удалённого X- или ssh-подключения... Однако, при чём же здесь неймспейсы? Ведь tty$N уже некое объёдинение K+V+M и некий "спейс".
___Да-да, знаю, "Остапа понесло". +++И, правда, о чём это я?!
>>> Можно ли виртуальные консоли vcsX засунуть в пространства имён и привязать к
>>> различным физическим устройствам (видеокартам, клавам) ?...патчат udisks вот, Л.П. говорит, чтоб каждый сииит только "свои" флэши "видел"...
> Наверное, уже (почти?!!) можно. Вот запилит кто-нибудь...............
> (Datalink, или как их там?, изящно объединяли наборы K+V+M путём подвешивания _всех
> трёх (vga в т.ч.!) на _один USB хаб -- и ловлей их на одной "ветке" дерева устройств).Plugable. (Видео - DisplayLink.)
В Fedora 17 г-н Потеринг обещает полную поддержку воткнул-и-работай мультисита с железом Plugable.
http://0pointer.de/blog/projects/multi-seat.html
http://www.phoronix.com/scan.php?page=article&item=plugable_... (на стр.3, последнее видео с LPC -- рекомендую для ознакомления, если ещё есть вопрос "что это")
http://www.kickstarter.com/projects/1666707630/plugable-thin...
Работа с одним компом с нескольких физических терминалов? Ай-яй-яй, опять этот Поттеринг тащит виндовс-вей в наш любимый UNIX :-P
> Работа с одним компом с нескольких физических терминалов?Где-то я это уже видел... А, точно, VAX/VMS, аж 1975 году.
А можно запустить вместе с chroot