IP-адреси із зворотним зв'язком (еквівалентно 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 тощо, але, без сумніву, хтось кине на мене гнилі фрукти.
живіт

Ви можете спробувати щось в області 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
Ця відповідь буде кращою, якщо ви додасте в будь-якому або обох вікнах чи 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, ви можете взяти fdза ним 7 випадкових байтів, як у цьому прикладі для систем 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

І уточнюйте інтерфейс при посиланні на такі адреси. Тестування з сіткою:

$ 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 - це дійсний спосіб локальної адреси веб-сайтів. Він не буде маршрутом за замовчуванням в Інтернеті. Однак ви можете маршрутизувати його локально. Кожна підмережа на сайті може мати досить глобально унікальний приватний префікс , незалежний від ISP.
Джон Маховальд

І місцевий сайт НЕ приймає місцевих. Ось моя думка :-)
korkman

0

Існує пропорційний RFC під назвою Більший префікс петлі для IPv6 , який пропонує використовувати 1::/32як локальну мережу. Однак пропозиція не була схвалена і минула вже у 2013 році.


Про це вже говорилося у відповіді, яку я писав минулого року на саме це питання.
kasperd

@kaspered О так, ви праві, вибачте, що не помітили, оскільки відповідь насправді включає дві відповіді і починається з іншої.
Ф.Рааб

Я не вважав, що проект, що закінчився, закінчується як відповідь, оскільки він ніколи не став стандартом. Я зазначив це під своєю відповіддю, оскільки це відповідна довідкова інформація та дає деякий контекст щодо того, яка спроба була стандартизована для даного діапазону для цієї конкретної мети.
kasperd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.