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.