Jak preferować komunikację w lokalnej podsieci przy użyciu ULA IPv6 zamiast GUA IPv6?

0

wszystkie moje urządzenia posiadają adresy IPV4, IPv6 LL, IPv6 ULA i IPv6 GUA w następujący sposób:

3: wlp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 88:b1:11:ed:21:c8 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.22/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp1s0
    valid_lft 863780sec preferred_lft 863780sec
inet6 fd00::xxxx:xxxx:xxxx:xxxx/64 scope global dynamic noprefixroute 
   valid_lft 6985sec preferred_lft 3385sec
inet6 2003:d4:4f1f:9500:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic noprefixroute 
   valid_lft 6985sec preferred_lft 1585sec
inet6 fe80::xxxx:xxxx:xxxx:xxxx/64 scope link noprefixroute 
   valid_lft forever preferred_lft forever

Niektóre bardziej złożone urządzenia (dostawcy usług) mają zainstalowany firewall iptables z:

-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -p ipv6-icmp -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

Kiedy teraz próbuję dotrzeć do urządzenia a z urządzenia b poprzez nazwę DNS, czasami używany jest GUA IPv6 i czasami ULA. Moje zapory ogniowe zezwalają niektórym portom (np. SSH) tylko na połączenia z podsieci ULA. Dlatego chcę wymusić korzystanie z ULA w mojej podsieci.

Czy to dobra droga? Jak mogę rozwiązać ten problem bez wyłączania zapór ogniowych i bez wpisywania docelowego adresu IP?

Dziękuję Ci

EDYCJA 20181118: RFC 6724 mówi: Domyślnie globalne miejsca docelowe IPv6 są preferowane w stosunku do miejsc docelowych ULA, ponieważ dowolna ULA nie jest koniecznie osiągalna (Podziękowania dla Rona Maupina). Więc oczywiście zrobiłem coś złego w mojej strukturze sieci. Czy istnieje inny sposób filtrowania ruchu w mojej podsieci za pomocą iptables? Globalny prefiks IPv6 jest dynamiczny, więc nie mogę go używać w moich statycznych plikach iptables, aby określić, czy pakiety pochodzą z mojej podsieci.

Santobert
źródło
RFC 6724, domyślny wybór adresu dla protokołu internetowego w wersji 6 (IPv6) wyjaśnia, jak należy wybierać adresy. Nie gwarantuję, że twój system operacyjny podąży za RFC.
Ron Maupin
Dodaj informacje z RFC 6724 (Podziękowania dla Rona Maupina). Nadal nie ma rozwiązania.
Santobert

Odpowiedzi:

2

Spróbuj edytować /etc/gai.conf i nadaj swoim ULA pierwszeństwo przed GUA.

Jeśli to nie pomoże i zakładając, że DNS zwróci wszystkie adresy wycieczek w losowej kolejności, obejściem byłoby dodanie nowego wpisu adresu dla każdej maszyny (może pod inną subdomeną), która zwraca tylko adres ULA.

dirkt
źródło
Byłoby to rozwiązanie, jeśli zdecyduję się pozostać przy mojej strukturze sieci. RFC 6724 opisuje ten problem bez podania konkretnego rozwiązania. Wygląda na to, że zrobiłem coś złego, gdy zaprojektowałem strukturę sieci. Powinno być inne rozwiązanie, aby określić, czy przychodzące pakiety pochodzą z mojej podsieci, czy nie.
Santobert
RFC 6724 opisuje sposób wybierania adresu źródłowego przy adresie docelowym. Czasami GUA i czasami ULA są używane jako źródło adresy pokazują, że czasami używane są GUA i czasami ULA przeznaczenie adresy, a to zazwyczaj pochodzi od DNS zwracającego adresy w losowej kolejności. Jeśli nie uważasz, że to jest powód, debuguj go: napisz prosty program C, który wykonuje rozpoznawanie nazw hostów i wypisuje otrzymany adres IPv6, uruchom go kilka razy. Redagowanie /etc/gai.conf powinien pozwolić Ci preferować ULA jako adres docelowy, naprawiając problem.
dirkt
Jeśli chcesz ustalić, czy pakiety pochodzą z twojej podsieci, czy nie, możesz sprawdzić, czy kurs jest wszystko prefiksy przypisane w podsieci, w tym GUA. Wtedy nie będzie miało znaczenia, które prefiksy zostaną wybrane na podstawie DNS.
dirkt
Dziękuję za wyjaśnienie. Przeczytałem kilka innych postów to to dobrze opisuje mój problem. Nie chcę edytować konfiguracji klienta, chyba że istnieje rozwiązanie umożliwiające rozwiązanie problemu dla wszystkich klientów. Powyższy artykuł zaleca używanie nazwy hosta w iptables. Czy nie jest to niebezpieczne, ponieważ każdy może przypisać sobie inną nazwę hosta i / lub domenę?
Santobert
Jak pisałem: Problemem jest to, jak działa Twój DNS (i nie podałeś żadnych szczegółów, jak to jest skonfigurowane). Nie powiedziałeś również, w jaki sposób uzyskasz swój prefiks GUA (od dostawcy usług internetowych? Czy to się zmienia?). Aby być bezpiecznym, musisz kontrolować swój DNS (np. Za pośrednictwem serwera proxy lub nawet używać /etc/hosts ). Jeśli możesz zagwarantować, że (1) masz specjalny wpis DNS tylko dla ULA, np. w subdomenie lub (2) ULA są zawsze preferowanym wyborem, za pośrednictwem /etc/gai.conflub poprzez konfigurację DNS lub (3) prefiks GUA i wpisy DNS zawsze się zgadzają, a następnie możesz bazować iptables wpisy na ten temat.
dirkt