Wiem, że narzędzie ip pozwala powiązać wiele adresów z interfejsem (np. Http://www.linuxplanet.com/linuxplanet/tutorials/6553/1/ ). W tej chwili jednak staram się zbudować coś na bazie IPv6 i bardzo przydatny byłby cały blok adresów (powiedzmy a / 64), aby programy mogły wybrać dowolny adres z zakresu i związać się z tym. Nie trzeba dodawać, że dołączenie każdego adresu IP z tego zakresu do interfejsu zajęłoby trochę czasu.
Czy Linux obsługuje wiązanie całego bloku adresów z interfejsem?
Odpowiedzi:
Linux 2.6.37 i nowsze wersje obsługują tę funkcję za pomocą AnyIP . Na przykład, jeśli uruchomię
na komputerze Ubuntu 11.04 będzie akceptować połączenia pod dowolnym adresem w sieci 2001: db8 :: / 32.
źródło
ip route list
lubip -6 route list
dodana trasa nie będzie widoczna. Jak wyliczyć blok adresu AnyIP?Tak, Linux obsługuje wiązanie bloku adresów sieciowych z interfejsem sieciowym ... ale tylko w interfejsie sprzężenia zwrotnego. Możesz to zrobić:
A następnie zrób to:
Przy odpowiednich trasach zrobi to, co chcesz ... dla adresów IPv4. Pytałeś o IPv6, a ja nie mam żadnego doświadczenia z IPv6, ale jest spora szansa, że zadziała w ten sam sposób.
Oryginalnie czytałem o tym tutaj (na dole artykułu). Zauważ, że w tym artykule omówiono także jawne przypisywanie wielu adresów do interfejsu za pomocą funkcji CentOS / Red Hat, o których wcześniej nie wiedziałem.
źródło
ip -6 route add local <ip> dev lo
.Widzę więc kilka opcji tutaj:
użyj skryptu, aby indywidualnie powiązać adresy z interfejsem
przekieruj żądany blok do pojedynczego adresu komputera, a następnie pozwól temu urządzeniu użyć interfejsu pcap, aby przechwycić cały ruch dla tego bloku (tak jakby to był router) i go obsłużyć.
Możesz grać w sztuczki z regułami NAT, a następnie przepisać blok Ips, który został przekierowany do jednego komputera do jednego wewnętrznego adresu IP na tym komputerze ... ale nadal będziesz mieć jeden wewnętrzny adres IP na adres IP, który naprawdę chcesz zapłacić uwaga, która wróci do rozwiązania 1.
Na twoim miejscu napisałbym mały skrypt w opcji 1. Lub użyj tego z tego miejsca :
źródło
Jak powiedzieli inni, możesz użyć mechanizmu AnyIP, aby skierować przychodzące pakiety dla całej podsieci do interfejsu localhost, ale pamiętaj, że musisz również poprosić router nadrzędny, aby skierował wszystkie pożądane pakiety do tego komputera w pierwsze miejsce. Można to zrobić po prostu za pomocą wpisów w tablicy routingu na routerze lub przez BGP. ARP nie jest tak naprawdę właściwe, biorąc pod uwagę, że twoja maszyna musiałaby ARP dla każdego adresu IP indywidualnie.
źródło
„Anyip” opisany powyżej nie działał dla mnie na centos 7. Musiałem utworzyć skrypt, aby ręcznie utworzyć adresy IPv6 podczas rozruchu. Aby to zrobić, dodałem następujące pliki do / etc / crontab:
Oto skrypt bash do utworzenia około 3000 adresów IPv6:
źródło