Адреса обратной связи IPv6 (эквивалент 127.xxx)


16

У меня настроена среда разработки, в которой у меня есть отдельный адрес обратной связи для нескольких веб-сайтов.

Например, у меня есть следующее:

127.0.0.1 www.example.com
127.0.0.2 foo.example.com
127.0.0.3 bar.example.com
127.0.0.4 waffles.example.com

Я хотел бы эквивалентное решение для IPv6.

Я уже знаю, что вы можете использовать :: 1 в качестве петлевого адреса, но :: 2, :: 3 и т. Д., Похоже, не работают.

Есть ли другие петлевые адреса в IPv6? Есть ли способ иметь несколько уникальных петлевых адресов?


1
Я бы порекомендовал :: ffff: 7f00: 1, :: ffff: 7f00: 2 и так далее, но, без сомнения, кто-нибудь бросит мне гнилые фрукты.
womble

Вы можете попробовать что-то в области многоадресной рассылки локального интерфейса IPv6. Это вернется к вашему хосту, и это огромный диапазон. Будет ли это работать для вас, зависит от того, что вы пытаетесь сделать.
Рон

Ответы:


13

Технически :: 2, :: 3 и т. Д. Являются частью :: 0.0.0.0/96, диапазона «ipv4-совместимый адрес ipv6». Это устарело, но вы, вероятно, не хотите использовать этот диапазон.

Для лабораторной среды используйте уникальную локальную адресацию. Перейдите на https://www.ultratools.com/tools/rangeGenerator и создайте себе префикс. Затем вы можете выбрать любые адреса из этого префикса и назначить их интерфейсу обратной связи.


Почему нет :: 127.0.0.0/96?
Тодд

9

Ваш обратный адрес :: 1/128. Обратите внимание на ширину подсети, которая ограничивает его только одним хостом. измените маску подсети на что-то более широкое и проверьте свою таблицу маршрутизации. Или используйте адреса локальной связи.


1
Этот ответ был бы лучше, если бы вы добавили на одном или обоих Windows или Linux, как связать дополнительные адреса IPv6 с интерфейсом обратной связи. В IPv4 вы получаете 127.0.0.1/8, а в IPv6 вы получаете :: 1/128, так есть ли способ добавить еще немного для IPv6?
Уильям

2
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ sudo ip route add local ::/104 dev lo 
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::2
PING ::2(::2) 56 data bytes
64 bytes from ::2: icmp_seq=1 ttl=64 time=0.083 ms
64 bytes from ::2: icmp_seq=2 ttl=64 time=0.128 ms
^C
--- ::2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.083/0.105/0.128/0.024 ms
jcomeau@aspire:~/rentacoder/jcomeau/kybyz$ ping6 ::3
PING ::3(::3) 56 data bytes
64 bytes from ::3: icmp_seq=1 ttl=64 time=0.148 ms
64 bytes from ::3: icmp_seq=2 ttl=64 time=0.141 ms
64 bytes from ::3: icmp_seq=3 ttl=64 time=0.142 ms

от Могу я связать (большой) блок адресов на интерфейс?

это единственное, что сработало для меня. Конечно, для Linux.

nota bene : поскольку в будущем это может привести к конфликту с адресами 0.0.0.0/8, ::127.0.0.0/104вероятно, будет лучшим выбором.


Это эффективно расширяет таблицу маршрутизации до диапазона, зарезервированного для совместимости с ipv4, как описано Беном Дженксом.
korkman

это не касается меня вообще. это для целей тестирования; это на моей локальной машине; это ни на кого не влияет, кроме меня самого.
jcomeau_ictx

1
@jcomeau_ictx Касается ли это вас или нет, это может касаться любого, кто будет использовать ваш ответ, потому что тогда он повлияет на них .
mtraceur

это возможно, но, возможно, нет, пока не назначен диапазон ipv4 0/8. в любом случае, я исправлю свой ответ.
jcomeau_ictx

было бы плохо, если бы я использовал / 96, но я использовал / 104. во всяком случае, я отредактировал ответ, чтобы использовать :: 127.0.0.0/104, диапазон обратной петли.
jcomeau_ictx

2

Я рекомендую использовать адреса RFC 4193 для этого. RFC 4193 позволяет вам создать свой собственный / 48 для локального использования, взяв значение байта, fdза которым следуют 5 случайных байтов. После первых 48 битов вам разрешается помещать все, что вы считаете нужным, поэтому, если вам нужен / 64, вы можете взять fd7 случайных байтов, как в этом примере для систем Linux:

ip -6 route add to local fd66:29e9:f422:8dfe::/64 dev lo

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

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

Существует черновой вариант с истекшим сроком, предполагающий, что диапазон 1::/32выделяется для дополнительных петлевых адресов, которые вы запрашиваете. Однако, поскольку срок действия этого проекта истек несколько лет назад, и такого распределения не было, вы не можете его использовать 1::/32.


Теперь я написал небольшой инструмент командной строки для генерации префиксов, соответствующих RFC 4193: v6tools.kasperd.dk/rfc4193
kasperd

0

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

Итак, для Linux:

$ sudo ip -6 address add fe80::1/64 dev lo
$ sudo ip -6 address add fe80::2/64 dev lo
$ sudo ip -6 address add fe80::3/64 dev lo

И указывать интерфейс при обращении к таким адресам. Тестирование с помощью Netcat:

$ nc -l -p 10001 fe80::1%lo
$ nc fe80::1%lo 10001

Проверка правильности объема:

$ ip -6 a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 
    inet6 fe80::1/64 scope link 
       valid_lft forever preferred_lft forever

Тем не менее, кажется, что добавлять каждый IP-адрес для подключения к нему не очень элегантно. С 127.0.0.0/8, вы можете привязать к любому адресу без предварительного их назначения.


Нет, ULA - это действительный способ локальной адресации сайта. По умолчанию он не будет маршрутизироваться в Интернете. Вы можете направить его локально, однако. Каждая подсеть на сайте может иметь достаточно глобально уникальный частный префикс , независимый от интернет-провайдера.
Джон Маховальд

И сайт локальный НЕ является хостом локальным. Это моя точка зрения :-)
korkman

0

Существует специальный RFC-протокол под названием A Larger Loopback Prefix для IPv6 , который предлагается использовать в 1::/32качестве локальной сети. Однако предложение не было одобрено и истекло уже в 2013 году.


Это уже упоминалось в ответе, который я написал в прошлом году на этот самый вопрос.
Касперд

@ kaspered О да, вы правы, извините, не заметили, так как ответ включает в себя фактически два ответа и начинается с другого.
F.Raab

Я действительно не считал просроченный проект ответом, потому что он никогда не становился стандартом. Я отметил это в своем ответе, потому что это релевантная справочная информация и предоставляет некоторый контекст того, что было сделано для стандартизации диапазона для этой конкретной цели.
Касперд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.