Я попытался добавить в интерфейс целый блок IPv6 (/ 64), используя
ip route add local 2001:41d0:2:ad64::/64 dev lo
как описано Вот на моем сервере Debian, но мне что-то не хватает.
Если я пингую например 2001:41d0:2:ad64::fe
локально все работает нормально, но если я попробую с удаленного компьютера, это не сработает. Затем я попытался добавить маршрут на eth0:
ip route add local 2001::41d0:2:ad64::/64 dev eth0
Теперь я не мог даже пропинговать ни один пример адреса локально!
Я немного потерялся, так как мне кажется, что я что-то упускаю, но я не могу найти здесь ответ.
Короче: я хочу 2001:41d0:2:ad64::/64
быть привязанным к eth0, чтобы каждый IP-адрес, содержащийся в этом блоке, был доступен из Интернета на моей машине.
Я надеюсь, что кто-то там может указать мне правильный путь. Заранее спасибо.
В руководство предоставленный интернет-провайдером, требует, чтобы я явно добавил каждый IPv6 в интерфейс. Я хочу, чтобы это было косвенно.
Рабочая конфигурация с явной привязкой IP-адреса
/ и т.д. / сеть / интерфейсы:
auto eth0
iface eth0 inet static
address my.ip.v4
netmask 255.255.255.0
network my.network.address.ip
broadcast my.broadcast.address.ip
gateway my.gateway.ip
iface eth0 inet6 static
address 2001:41d0:2:ad64::fe
netmask 64
gateway 2001:41d0:2:adff:ff:ff:ff:ff
up ip addr add 2001:41d0:2:ad64::1/64 dev eth0
down ip addr del 2001:41d0:2:ad64::1/64 dev eth0
up ip addr add 2001:41d0:2:ad64::2/64 dev eth0
down ip addr del 2001:41d0:2:ad64::2/64 dev eth0
up ip addr add 2001:41d0:2:ad64::3/64 dev eth0
down ip addr del 2001:41d0:2:ad64::3/64 dev eth0
up ip addr add 2001:41d0:2:ad64::4/64 dev eth0
down ip addr del 2001:41d0:2:ad64::4/64 dev eth0
up ip addr add 2001:41d0:2:ad64::5/64 dev eth0
down ip addr del 2001:41d0:2:ad64::5/64 dev eth0
up ip addr add 2001:41d0:2:ad64::6/64 dev eth0
down ip addr del 2001:41d0:2:ad64::6/64 dev eth0
up ip addr add 2001:41d0:2:ad64::7/64 dev eth0
down ip addr del 2001:41d0:2:ad64::7/64 dev eth0
up ip addr add 2001:41d0:2:ad64::8/64 dev eth0
down ip addr del 2001:41d0:2:ad64::8/64 dev eth0
up ip addr add 2001:41d0:2:ad64::9/64 dev eth0
down ip addr del 2001:41d0:2:ad64::9/64 dev eth0
up ip addr add 2001:41d0:2:ad64::a/64 dev eth0
down ip addr del 2001:41d0:2:ad64::a/64 dev eth0
Решение попробовать # 1
Я попытался повторно включить локальный маршрут, как предложил @kasperd.
Содержимое моего / etc / network / interfaces
auto lo
iface lo inet loopback
post-up ip route add local 2001:41d0:2:ad64::/64 dev lo
pre-down ip route del local 2001:41d0:2:ad64::/64 dev lo
auto eth0
iface eth0 inet static
# <snip of ipv4 config>
iface eth0 inet6 static
address 2001:41d0:2:ad64::fe
netmask 64
gateway 2001:41d0:2:adff:ff:ff:ff:ff
Таблица локальной маршрутизации:
# ip -6 route show table local
local ::1 dev lo proto none metric 0
local 2001:41d0:2:ad64::fe dev lo proto none metric 0
local 2001:41d0:2:ad64::/64 dev lo metric 1024
local fe80::225:90ff:fe06:6bbe dev lo proto none metric 0
ff00::/8 dev eth0 metric 256
Выход traceroute
(мой локальный домашний компьютер):
1 <1 ms <1 ms <1 ms fritz.box [xxx]
2 20 ms 21 ms 24 ms 2002:c058:6301::1
3 21 ms 22 ms 24 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
4 44 ms 31 ms 40 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
5 * * * Zeitüberschreitung der Anforderung.
6 * * 35 ms ams-5-6k.nl.eu [2001:41d0::8d1]
7 37 ms 39 ms 36 ms rbx-g2-a9.fr.eu [2001:41d0::ab1]
8 37 ms 70 ms 36 ms chi-3-4m.il.us [2001:41d0::176]
9 Zielhost nicht erreichbar.
Ablaufverfolgung beendet.
traceroute6
на сервере:
traceroute to 2001:41d0:2:ad64::23 (2001:41d0:2:ad64::23), 30 hops max, 80 byte packets
1 2001:41d0:2:ad64::a (2001:41d0:2:ad64::a) 0.028 ms 0.009 ms 0.008 ms
ping6
на сервере:
PING 2001:41d0:2:ad64::23(2001:41d0:2:ad64::23) 56 data bytes
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 2001:41d0:2:ad64::23: icmp_seq=2 ttl=64 time=0.057 ms
^C
--- 2001:41d0:2:ad64:23 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.029/0.043/0.057/0.014 ms
tcpdump
вывод (при пинге и трассировке на удаленном сервере):
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
tracert
к шлюзу:
Routenverfolgung zu vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff] über maximal 3
0 Abschnitte:
1 <1 ms <1 ms <1 ms fritz.box [2002:5476:1b4c:0:c225:6ff:fe40:b2b0]
2 23 ms 22 ms 26 ms 2002:c058:6301::1
3 24 ms 40 ms 23 ms 10gigabitethernet6.switch2.fra1.he.net [2001:470
:0:150::1]
4 28 ms 37 ms 39 ms 100ge3-1.core1.ams1.he.net [2001:470:0:2d4::1]
5 * * * Zeitüberschreitung der Anforderung.
6 38 ms 33 ms * ams-5-6k.nl.eu [2001:41d0::8d1]
7 36 ms 39 ms 38 ms rbx-g2-a9.fr.eu [2001:41d0::ab1]
8 36 ms 35 ms 35 ms vss-3-6k.fr.eu [2001:41d0:2:adff:ff:ff:ff:ff]
Ablaufverfolgung beendet.
ping
к шлюзу:
Ping wird ausgeführt für 2001:41d0:2:adff:ff:ff:ff:ff mit 32 Bytes Daten:
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=36ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=34ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=38ms
Antwort von 2001:41d0:2:adff:ff:ff:ff:ff: Zeit=57ms
Ping-Statistik für 2001:41d0:2:adff:ff:ff:ff:ff:
Pakete: Gesendet = 4, Empfangen = 4, Verloren = 0
(0% Verlust),
Ca. Zeitangaben in Millisek.:
Minimum = 34ms, Maximum = 57ms, Mittelwert = 41ms
Таким образом, он все еще работает локально (сервер), но не удаленно (мой компьютер).
Мне нужно было что-то подобное в прошлом. Я обнаружил, что для этого нужно сделать три шага:
IP_FREEBIND
или IP_TRANSPARENT
вариант на розеткахПравильный способ перенаправления префикса на хост предполагает обращение к вашему провайдеру, если он еще не предоставил вам его. У них может быть сервер DHCPv6, который может делегировать вам префикс, если вы просто отправите ему правильный запрос DHCPv6.
Если по какой-то причине вам невозможно получить реальный маршрутизируемый префикс, но у вас есть доступ для использования любого количества адресов из префикса ссылки, доступного на одном из ваших сетевых интерфейсов, вы можете превратить часть этого префикса в маршрутизируемый префикс, наличие ответа демона на запросы обнаружения соседей для каждого IPv6-адреса в этом диапазоне.
Использование такого демона не рекомендуется, кроме как в крайнем случае, поскольку он без необходимости потребляет память всех ваших соседей. Есть несколько реализаций такого демона, одна из которых выглядит многообещающей: ndppd. (У меня нет конкретного опыта работы с ним, так как я узнал о нем только после того, как написал свой собственный с жестко заданным префиксом ссылки.)
Похоже, у вас уже работает местный маршрут. Как вы заметили, его нужно назначить lo
интерфейс для работы.
Наконец, приложениям, использующим адреса из этого диапазона, нужна опция IP, чтобы иметь возможность связываться с адресами, которые явно не назначены конкретному сетевому интерфейсу на хосте. Вот фрагмент кода, который можно использовать:
const int one = 1;
setsockopt(fd, SOL_IP, IP_FREEBIND, &one, sizeof(one));
Сейчас 2019 год. Одно слово: ip_nonlocal_bind (насколько я знаю, начиная с ядра 4.3).
Используйте ndppd + sysctl net.ipv6.ip_nonlocal_bind = 1, последний позволяет выполнять привязку к любому IPv6-адресу (в этом случае IP_FREEBIND не требуется).
Думаю, вы это сделали:
ip add add local 2001::41d0:2:ad64::/64 dev lo
ip route add local 2001::41d0:2:ad64::/64 dev eth0
sysctl net.ipv6.ip_nonlocal_bind = 1
ndppd.conf будет выглядеть так:
route-ttl 30000
proxy eth0 {
router no
timeout 500
ttl 30000
rule 2001::41d0:2:ad64::/64{
static
}
}
запустите ndppd, и теперь вы можете привязаться к любому адресу (добавленного блока) и использовать его по мере добавления.