Интерфейсы

Подборка по конфигурированию интерфейсов.

Под BSD работает команда

ifconfig <if_name> inet6 <address> prefixlen <len>

например,

ifconfig em0 inet6 xxyy:zz::a prefixlen 64

Правда, очень часто встречается синтаксис

ifconfig <if_name> inet6 alias <address> prefixlen <len>

но и без alias все работает.

Маршрут по умолчанию добавляется командой

route add -inet6 default <ipv6_address_of_router>

а просмотреть конфигурацию можно командой

ifconfig <if_name>

и роутинг – командами

route show
или
route -n show -inet6

На BSD, во всяком случае, работают обе. Кстати, netstat -rn тоже работает.
А в постоянную конфигурацию это дело включается также аналогично четвертой версии. Так, в OpenBSD для интерфейса xl0 адрес добавляется в «родной» файл hostname.xl0 такой строкой:

inet6 <ipv6_address> <prefixlen>

а шлюз по умолчанию – отдельной строкой в файл mygate соответственно. Во FreeBSD – это добавляется в rc.conf.

Кстати, опять-таки в половине примеров присутствует слово alias….

В Linux можно пользоваться этими же командами, а также там есть замечательная утилита с легко запоминающимся именем ip. Вроде бы  она входит в состав ОС по умолчанию. Во всяком случае, в Ubuntu 10.4 server она есть. Вот как ей пользоваться:

Включить-выключить интерфейс (скажем, вместо <interface> можно подставить eth0)

ip link set dev <interface> up
ip link set dev <interface> down

Посмотреть конфигурации адресов на интерфейсе:
ip -6 addr show dev <interface>

Задать адрес для интерфейса:
ip -6 addr add <ipv6address>/<prefixlength> dev <interface>

Удалить его:
ip -6 addr del <ipv6address>/<prefixlength> dev <interface>

Посмотреть таблицу роутинга
ip -6 route show [dev <device>]

Добавить маршрут
ip -6 route add <ipv6network>/<prefixlength> via <ipv6address>  [dev <device>]

Удалить маршрут
ip -6 route del <ipv6network>/<prefixlength> via <ipv6address> [dev <device>]

Подробнее можно прочитать на этом сайте.

А на Cisco процесс выглядит так:

на интерфейсе задаем адрес:

ter mon
conf t
ipv6 addr xxxx:yyyy:zzzz::5/48
ipv6 enable

Вторая команда автоматически создает link-local адреса.

И, разумеется, при использовании масок /64 можно задавать eiu-адреса для Ethernet-интерфейсов, что здорово упрощает жизнь. Команда для интерфейса при этом выглядит так:

ipv6 addr xxxx:yyyy:zzzz::/64 eiu-64

При этом роутер честно инвертирует 7й бит mac-адреса, хотя практически никто этого не делает.

Также заметил, что если хочешь задать eiu-64 адрес, то на конце префикса обязательно нужно ставить :: – иначе получишь сообщение об ошибке в синтаксисе. Даже если адрес имеет вид 2007:1234:4321:9876, то все равно команда будет выглядеть так:

ipv6 addr 2007:1234:4321:9876::/64 eiu-64

Вот еще заметил: sh run int <name> покажет эти адреса (точнее – строки), sh int и sh ip int – не покажет, а sh ipv6 int – покажет.

Ну, и для включения процесса роутинга 6й версии нужно дать глобальную комаду

ipv6 unicast-routing

… после чего можно включать отладчик deb ipv6 packet и любоваться.

Автоконфигурирование интерфейса под OpenBSD

Разумеется, тут все посложнее по сравнению с Windows.

Сначала редактируем /etc/sysctl.conf
Меняем только один параметр, точнее устанаваливаем его равным 1. В «родном» файле также есть комментарий, что форвардинг должен быть отключен.
Вот модифицируемая строка, она должна выглядеть так:

net.inet6.ip6.accept_rtadv=1    # 1=Permit IPv6 autoconf (forwarding must be 0)

Предположим, что у нас сетевой адаптер именуется em0, тогда редактируем файл /etc/hostname.em0

помещаем в него одну-единственную строку
rtsol

(это — для «чистой» IPv6 конфигурации, если не требуется поддержка IPv4)

И — перезагружаем машину. Можно обойтись и без перезагрузки, но у нас была тестовая конфигурация.

Что было сделано?
— в конфигурационном файле было разрешено принимать router advertisement (RA)
— в конфигурации интерфейса разрешено использовать router solicitation (RS)

То есть машина сможет получать и использовать для генерации собственного IPv6-адреса префикс (префиксы) от роутера и адрес шлюза по умолчанию.

Проверяем: пусть наш роутер анонсит 2001:0db8::/64
Смотрим, что стало с нашим интерфейсом:


$ ifconfig em0
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
lladdr d0:27:88:3e:22:15
priority: 0
groups: egress
media: Ethernet autoselect (100baseTX full-duplex)
status: active
inet6 fe80::d227:88ff:fe3e:2215%em0 prefixlen 64 scopeid 0x1
inet6 2001:0db8:0:0:d227:88ff:fe3e:2215 prefixlen 64 autoconf pltime 604723 vltime 2591923

Видим: «глобальный» IPv6-адрес получен, linc-local также есть, и оба они построены в соответствии с EUI-64.

Смотрим таблицу роутинга:

$ route show
Routing tables

Часть информации опущена, самое важное здесь — в строке, помеченной звездочками: это дефолтный маршрут.

Internet6:
Destination        Gateway            Flags   Refs      Use   Mtu  Prio Iface
::/104             localhost          UGRS       0        0     -     8 lo0
::/96              localhost          UGRS       0        0     -     8 lo0
default            fe80::222:91ff:fe9 UG         0        3     -     4 re0
localhost          localhost          UH        14        0 33160     4 lo0
::127.0.0.0/104    localhost          UGRS       0        0     -     8 lo0
::224.0.0.0/100    localhost          UGRS       0        0     -     8 lo0
::255.0.0.0/104    localhost          UGRS       0        0     -     8 lo0
::ffff:0.0.0.0/96  localhost          UGRS       0        0     -     8 lo0
2002::/24          localhost          UGRS       0        0     -     8 lo0
2002:7f00::/24     localhost          UGRS       0        0     -     8 lo0
2002:e000::/20     localhost          UGRS       0        0     -     8 lo0
2002:ff00::/24     localhost          UGRS       0        0     -     8 lo0
2001:0db8:0:0::/64 link#1             UC         0        0     -     4 re0
2001:0db8:0:0:d227 d0:27:88:3e:20:65  UHL        0        0     -     4 lo0

Прверяем:

$ ping6 ipv6.google.com
PING6(56=40+8+8 bytes) 2001:0db8:0:0:d227:88ff:fe3e:2215 --> 2a00:1450:4008:c00::93
16 bytes from 2a00:1450:4008:c00::93, icmp_seq=0 hlim=57 time=43.746 ms
16 bytes from 2a00:1450:4008:c00::93, icmp_seq=1 hlim=57 time=43.991 ms
16 bytes from 2a00:1450:4008:c00::93, icmp_seq=2 hlim=57 time=43.764 ms
16 bytes from 2a00:1450:4008:c00::93, icmp_seq=3 hlim=57 time=43.533 ms
16 bytes from 2a00:1450:4008:c00::93, icmp_seq=4 hlim=57 time=43.734 ms
^C
--- ipv6.l.google.com ping6 statistics ---
5 packets transmitted, 5 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 43.533/43.754/43.991/0.145 ms

Ура, работает!


  *** Via IPv4 ***  

Интерфейсы: 4 комментария

    1. admin Автор записи
      Вручную меняли свои адреса на «документальные» и видимо регистр не переключился. Поправили.
        *** Via IPv4 ***  
  1. NB
    А если бы показали как в живую из 2A02:5800::/32 — проблем бы не было?
      *** Via IPv4 ***  
    1. admin Автор записи
      А что бы изменилось? Для специалиста установить источник — пустяковое дело, нам хвастаться — ни к чему, но раз есть блок адресов для документирования и примеров — то почему бы его и не использовать?
        *** Via IPv4 ***  

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.