Jak powiązać gniazda serwera IPv6 za routerem domowym za pomocą dynamicznego delegowania prefiksu?

2

Próbuję uruchomić osobistą usługę internetową z mojej sieci na IPv6. Chcę, aby była widoczna w publicznym Internecie i za rekordem AAAA. Muszę zrównoważyć łatwość konfiguracji i płynną rekonfigurację, gdy zmienia się prefiks IPv6 od mojego dostawcy usług internetowych.

Z którym adresem mam się powiązać? Lokalny adres IPv6 + NAT, czy powinienem zaakceptować globalnie rutowalne opcje przekazane do hosta poprzez delegowanie prefiksu?

Moje hosty stoją za routerem OpenWRT, IPv4 + IPv6. OpenWRT otrzymuje /56prefiks delegowany przez mojego dostawcę usług internetowych (Telus w Kanadzie). Jednak ten prefiks nie jest statyczny . Od czasu do czasu zmienia się w kolejności dni. Czasami mogę przyspieszyć zmianę, wykonując resety.

Jestem gotów spróbować tej rzeczy bez NAT na IPv6. Nie przeszkadza mi dziurkowanie portów / adresów IP w zaporze stanowej, ale chciałbym uniknąć translacji adresów.

W mojej bezstanowej + stanowej konfiguracji IPv6 moje hosty w sieci LAN wykonują autokonfigurację, a także robią DHCPv6, aby uzyskać dzierżawiony adres. Na moim polu ubuntu:

192.168.1.4
fd00:cafe::4/128                    # ULA local (by dhclient -6)
2001:2:3:4:a8a8:efcf:d96d:1315/64   # slaac+privacy global
2001:2:3:4:22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fd00:cafe::a8a8:efcf:d96d:1315/64   # slaac+privacy local
fd00:cafe::22f:bcff:fe12:1234/64    # slaac+EUI64 (macaddr)
fe80::21f:bcff:fe08:c07a/64         # link local

Te 2001:2:3:4:adresy są trasowane na publicznym Internecie. fd00:cafe::Są routingu tylko lokalnie na moim podsieci. fd00:cafe::to prefiks, który skonfigurowałem w OpenWRT (ULA) tylko dla mojej sieci wewnętrznej. fe80:Oczywiście nie jest routing. OpenWRT nie dzierżawi 2001:2:3:4::4w tej konfiguracji, zgodnie z projektem (bardzo by mi się podobało).

Adres IP v6, który wybiorę dla mojej usługi, musi gdzieś skończyć w rekordzie DNS AAAA, więc byłoby lepiej, gdyby nie zmieniał się co godzinę.

  • Adresy slaac + EUI mówią trochę o moim adresie Mac i nie podoba mi się to.
  • Adresy prywatności slaac + są nieco bardziej chroniące prywatność, ale zmieniają się co kilka godzin, a to jest mniej pożądane. Adresy się zatrzymują, jeśli nadal są używane, ale będą uwalniane za każdym razem, gdy uruchamiam usługę (i dns będzie musiał zostać zaktualizowany - co zajmuje minimum 5 minut).
  • Inną opcją jest po prostu statyczne wybranie sufiksu, który lubię dla mojej usługi (np. ::d00d), Z tym samym globalnie routowalnym prefiksem i statyczne przypisanie go do mojej nicości, na przykład:
$ sudo ip -6 addr add 2001:2:3:4::d00d/64 dev eth0

Następnie w moich aplikacjach mogłem powiązać tylko z tym adresem (lub „::” na urządzeniu przechowującym ten adres IP).

# ./myserver -l 2001:2:3:4::d00d/64 -p 8080

Teraz, kiedy mam gniazdo nasłuchiwania powiązane z publicznie routowalnym adresem IP na hoście, jaki jest najlepszy sposób, aby poinformować router, aby dopuścił do niego pakiety SYN? Potrzebuję tu dziury. UPnP, NAT-pmp?

Czy myślę o tym w niewłaściwy sposób? Jaka jest typowa konfiguracja IPv6?

Aktualizacja

Próbowałem użyć hostidustawienia dhcp w moich dzierżawach OpenWRT /etc/config/dhcp. Podobno pozwala na określenie ostatnich 32 bitów rezerwacji dhcpv6. Miałem nadzieję, że otrzymam dodatkowy IPv6 z prefiksem wan i moim wybranym sufiksem, ale bez powodzenia. Klient dhcp6 na moim hoście nadal nie otrzymuje tego dodatkowego adresu IP. Prawdopodobnie związane z tym problemem odhcpd 61 .

init_js
źródło
Po co się męczyć? Wystarczy powiązać z nieokreślonym adresem, jak wszyscy inni.
Michael Hampton,
Powiązanie z ::to sposób odbierania połączeń na wszystkie adresy IP z powyższej listy oraz adresy wszystkich innych interfejsów na hoście. Nie otworzy zapory routera automatycznie. Którego adresu użyłbyś wtedy do wypełnienia DNS?
init_js
Uwaga: Telus blokuje porty 80/443 nawet na IPv6 (choć nie jestem pewien, jak obsługują biznesplany)
jtl999,

Odpowiedzi:

2

Jeśli zamierzasz skonfigurować AAAArekord, skonfiguruj ten adres jako statyczny adres IP na hoście, który wymaga statycznego adresu IP. DHCP może służyć do obsługi statycznych adresów IP, ale jest to kiepskie rozwiązanie drugiego wyboru.

OpenWRT używał dnsmasqDHCP (v4 i v6) i DNS. dnsmasqmożna skonfigurować tak, aby podawał statyczny adres IPv6, jeśli klient używa DHCPv6. Może być właściwe użycie ich jako miejsca docelowego dla serwera proxy lub VIP (wirtualny adres IP. Wydaje się, że najnowsza wersja OpenWRT może być używana w odhcpdprzypadku niektórych, jeśli nie wszystkich usług DHCP.

Użyj zapory, aby otworzyć porty z Internetu na serwer. (Przypisany adres będzie adresem w Internecie oraz w sieci LAN.) Powinieneś być w stanie połączyć się lokalnie z serwerem bez otwierania portów w zaporze.

odhcpdobsługuje statyczny adres IP, dodając hostsekcję do jego konfiguracji. Nie mam routera do najnowszej wersji OpenWRT, więc używam, dnsmasqktóry może również świadczyć usługi RA i DHCPv6. Powinno być możliwe określenie statycznego adresu IP na dole strony konfiguracji DHCP i DNS.

Protokół IPv6 nie powinien wymagać translacji adresów sieciowych, chociaż może być miejscem docelowym serwera proxy lub adresu VIP (wirtualnego adresu IP). Zbuduj a / 64 z / 56 przekazanego ci i przypisz adres z tego / 64 do swojego serwera WWW. To jest adres, którego powinieneś użyć. Twój serwer internetowy będzie potrzebował klienta Dynamic IP, który może aktualizować DNS przy każdej zmianie adresu. Dopóki nie zaczną działać statyczne adresy IP DHCP, adres MAC będzie Twoim stabilnym adresem.

Adres w bloku sieciowym z fc00:/8nie powinien być wykorzystywany do komunikacji z Internetem. Są one przeznaczone do wykorzystania jako unikalne adresy lokalne, podobne do adresów prywatnych IPv4.

Może być konieczne opracowanie własnych skryptów dynamicznych adresów IP. Na routerze będziesz musiał zaktualizować zaporę, gdy zmieni się / 56, i może być konieczne wprowadzenie innych zmian. Na serwerze internetowym musisz zaktualizować DNS i ewentualnie przypisać nowy statyczny adres IP. (Myślę, że przypisanie przy zmianie prefiksu adresu IP może być prostsze niż przypisanie statycznego adresu IPv6 przez DHCP).

BillThor
źródło
Moja wersja OpenWrt (v15.05.1 chaos calmer) używa odhcpd do świadczenia usługi dhcpv6 w sieci. dnsmasq jest używany, ale wierzę, że tylko jako lokalny DNS. W trybie bezstanowym + stanowym odhcpd będzie obsługiwał tylko jeden adres IPv6 na hostach ( github.com/sbyx/odhcpd/issues/61 ) - nie mogę dodać wpisu statycznego. Statyczne dodawanie rezerwacji DHCPv6 na routerze jest trudne, biorąc pod uwagę, że prefiks (np. 2001:2:3:4:/64) Nie jest znany, dopóki odhcpc nie zakończy uzgadniania DHCPv6-PD z dostawcą usług internetowych. Wydaje mi się, że jest to łatwiejsze od hosta z powodu wszystkich dostępnych haków aktualizacji IP.
init_js
Właśnie zauważyłem, że przegapiłem mój adres ULA z listy. Dodanie tego
init_js
@init_js Po prostu nie używaj DHCP, jeśli chcesz statyczny adres IP. odhcpobsługuje statyczne przypisywanie adresów. Zobacz aktualizację mojej odpowiedzi.
BillThor,
Nie sądzę, aby wskazane było hostwpisanie pełnego / 128 wpisu (instrukcja: wiki.openwrt.org/doc/techref/odhcpd ) w konfiguracji, jeśli prefiks sieci jest dynamiczny. Istnieje jednak hostidustawienie, które może pozwolić mi kontrolować ostatnie 32 bity adresu IPv6 (zastrzeżenie: github.com/sbyx/odhcpd/issues/27 ). Podejrzewam, że dowolny wybrany przeze mnie hostid będzie dołączany tylko do prefiksu ULA, a nie do prefiksu wan. Ale dam temu szansę!
init_js
2
@init_js Telus powinien przypisać do ciebie static / 56, które rozwiązałyby twój problem. Przyjęcie IPv6 w Kanadzie jest opóźnione. Nie ma potrzeby, aby dostawcy usług internetowych, tacy jak Telus, nie podawali wszystkim statycznych adresów IPv6, warto wysłać list do CRTC.
BillThor