%20funktioniert%20nicht.png)
Ich habe einen scaleway.com-Server (DEV1-S), der mir ein /64 IPv6-Subnetz bietet. Ich möchte eine IP aus diesem Subnetz verwenden, um eine HTTP-Anfrage zu stellen (in den Beispielen werde ich wget verwenden), aber ich bekomme es nicht zum Laufen. Die Anfrage (mit wget, aber auch mit anderen Programmen und Programmiersprachen) bleibt hängen.
Die IPv6-Adresse ist 2001:bc8:1830:1b18::1, das Gateway ist 2001:bc8:1830:1b18:: und die Netzmaske ist 64.
Wenn Sie auf dem sauberen/gerade erstellten Server ausführen ip -6 addr
, wird Folgendes ausgegeben:
root@test:~# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:bc8:1830:1b18::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::dc2e:4cff:fe57:a019/64 scope link
valid_lft forever preferred_lft forever
Ich habe in Foren und anderen Fragen/Antworten gelesen, dass Sie die folgenden Befehle ausführen müssen, um eine Bindung an eine Adresse aus einem Subnetz herstellen zu können:
ip add add local 2001:bc8:1830:1b18::/64 dev lo
ip route add local 2001:bc8:1830:1b18::/64 dev ens2
sysctl -w net.ipv6.ip_nonlocal_bind=1
Nach diesen Befehlen ist die Ausgabe ip -6 addr
folgende:
root@test:~# ip -6 addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 2001:bc8:1830:1b18::/64 scope global
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:bc8:1830:1b18::1/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::dc2e:4cff:fe57:a019/64 scope link
valid_lft forever preferred_lft forever
Ich kann jetzt zB. 2001:bc8:1830:1b18::9
statt nur ping6 ansteuern 2001:bc8:1830:1b18::1
, aber nur von meinem eigenen Server. Nicht von anderen Servern/Netzen.
Ohne das sysctl -w net.ipv6.ip_nonlocal_bind=1
würde wget Folgendes zurückgeben:
root@test:~# wget --bind-address=2001:bc8:1830:1b18::2 -v google.com
--2021-08-13 00:29:45-- http://google.com/
Resolving google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Connecting to google.com (google.com)|2a00:1450:400e:802::200e|:80... failed: Cannot assign requested address.
Connecting to google.com (google.com)|142.250.179.174|:80... failed: Address family not supported by protocol.
Wenn ich nun nach den drei Befehlen wget mit dem Flag --bind-address auf eine andere Adresse im Subnetz als gesetzt ausführe 2001:bc8:1830:1b18::1
, bleibt die Anforderung für immer hängen:
root@test:~# wget --bind-address=2001:bc8:1830:1b18::1 google.com
--2021-08-12 23:55:48-- http://google.com/
Resolving google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Connecting to google.com (google.com)|2a00:1450:400e:802::200e|:80... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: http://www.google.com/ [following]
--2021-08-12 23:55:48-- http://www.google.com/
Resolving www.google.com (www.google.com)... 2a00:1450:400e:80f::2004, 142.251.36.4
Connecting to www.google.com (www.google.com)|2a00:1450:400e:80f::2004|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘index.html’
index.html [ <=> ] 13.03K --.-KB/s in 0.009s
2021-08-12 23:55:48 (1.44 MB/s) - ‘index.html’ saved [13342]
root@test:~# wget --bind-address=2001:bc8:1830:1b18::2 google.com
--2021-08-12 23:55:52-- http://google.com/
Resolving google.com (google.com)... 2a00:1450:400e:802::200e, 142.250.179.174
Connecting to google.com (google.com)|2a00:1450:400e:802::200e|:80...
lsof
für den wget-Prozess sagt das folgendes: wget 3413 root 3u IPv6 58660 0t0 TCP[2001:bc8:1830:1b18::2]:56623->ams15s41-in-x0e.1e100.net:http (SYN_SENT)
Was mache ich falsch? Vielen Dank im Voraus!