Discord library Connection Problem IPV6

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Friedmann
User
Beiträge: 3
Registriert: Sonntag 9. April 2023, 19:14

Hallo liebe Gemeinde, aktuell lerne ich für meine Umschulung und wollte hier einen Discord Bot in Python umsetzen. Das klappt auf Windows und Linux mit IPV4 auch sehr gut. Doch nun wo ich es auf meinem IPV6 Debian 11 Server starten wollte, kriege ich eine Fehlermeldung, die anscheinend bedeutet, das ich ein Problem habe zum Port 443 zu verbinden, was irgendwie kein Sinn ergibt, weil das gleiche Py Script ja ohne Probleme auf IPv4 läuft. Nun wollte ich um Hilfe der Gemeinde bitten, in der Hoffnung daß jemand die Lösung kennt und mir erklären kann, warum das so ist und wie ich es löse.

Information:
  • Port 443 ist frei
    Port 443 wird von keinem anderen Programm genutzt
Ich erhalte folgende Meldung wenn ich das Script starten möchte:
root@debian-4gb-fsn1-1:~/pyscripts# python3 itheinz.py
2023-07-07 05:11:39 INFO discord.client logging in using static token
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 980, in _wrap_create_connection
return await self._loop.create_connection(*args, **kwargs) # type: ignore[return-value] # noqa
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 1085, in create_connection
raise exceptions[0]
File "/usr/lib/python3.11/asyncio/base_events.py", line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 973, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/lib/python3.11/asyncio/selector_events.py", line 634, in sock_connect
return await fut
^^^^^^^^^
File "/usr/lib/python3.11/asyncio/selector_events.py", line 642, in _sock_connect
sock.connect(address)
OSError: [Errno 101] Network is unreachable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/root/pyscripts/itheinz.py", line 54, in <module>
bot.run(TOKEN)
File "/usr/lib/python3/dist-packages/discord/client.py", line 860, in run
asyncio.run(runner())
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/discord/client.py", line 849, in runner
await self.start(token, reconnect=reconnect)
File "/usr/lib/python3/dist-packages/discord/client.py", line 777, in start
await self.login(token)
File "/usr/lib/python3/dist-packages/discord/client.py", line 612, in login
data = await self.http.static_login(token)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/discord/http.py", line 801, in static_login
data = await self.request(Route('GET', '/users/@me'))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/discord/http.py", line 624, in request
async with self.__session.request(method, url, **kwargs) as response:
File "/usr/lib/python3/dist-packages/aiohttp/client.py", line 1141, in __aenter__
self._resp = await self._coro
^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/client.py", line 536, in _request conn = await self._connector.connect(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 540, in connect
proto = await self._create_connection(req, traces, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 901, in _create_connection
_, proto = await self._create_direct_connection(req, traces, timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 1206, in _create_direct_connection
raise last_exc
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 1175, in _create_direct_connection
transp, proto = await self._wrap_create_connection(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3/dist-packages/aiohttp/connector.py", line 988, in _wrap_create_connection
raise client_error(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorError: Cannot connect to host discord.com:443 ssl:default [Network is unreachable]
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ich habe keine Ahnung von IPv6, aber was ich sehe ist ein Missverständnis auf deiner Seite: der Port 443 ist der des discord servers. Und dahin kann sich sein Skript nicht verbinden. Das ist also in irgendeiner Form ein routing Problem.
Friedmann
User
Beiträge: 3
Registriert: Sonntag 9. April 2023, 19:14

Mhh grundlegend war das auch mein Gedanke, aber mein Bot (genau das gleiche Script) muss sich ja mit der Api von Discord verbinden. Und über IPv4 funktioniert dieses ja auch Problemfrei über das Script auf meinem Server. Aber sobald ich auf IPv6 wechsel gibt er mir diese Fehlermeldung und bekommt die Verbindung nicht aufgebaut.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das habe ich schon verstanden. Du sagst aber “Port 443 ist frei”. Als ob das relevant wäre. Ist es nicht. Auf deinem Rechner kann auf 443 was laufen, oder nicht. Es geht um die Verbindung zu discord.com. DIE ist verhindert. Unter IPv4 würde ich nach Firewall regeln auf dem Router schauen. Ähnlich mag das bei IPv6 aussehen.
Friedmann
User
Beiträge: 3
Registriert: Sonntag 9. April 2023, 19:14

Genau das wollte ich doch klarstellen mit der Aussage "Port 443 ist frei" das Eingang und Ausgang in der Firwall über IPv6 wie IPv4 zugelassen sind
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das magst du gemeint haben, aber deine Formulierung hat das nicht hergegeben.

Wie dem auch sei: die Verbindung zu discord.com muss eben via IPv6 klappen. Python hat da ziemlich sicher keinen Einfluss drauf. Kannst du mit dem Browser darauf zugreifen? Vom gleichen Rechner aus? Was sagen die DNS-Infos zu discord.com bei v6 und v4?
Benutzeravatar
__blackjack__
User
Beiträge: 13116
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Kleine Internetrecherche ergibt das Discord kein IPv6 unterstützt, oder zumindest nicht flächendeckend‽ Sowas sollte man vorher abklären, bevor man lange bei sich selbst sucht. 😀

Code: Alles auswählen

bj@s8n:~$ nslookup discord.com
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   discord.com
Address: 162.159.136.232
Name:   discord.com
Address: 162.159.128.233
Name:   discord.com
Address: 162.159.137.232
Name:   discord.com
Address: 162.159.135.232
Name:   discord.com
Address: 162.159.138.232

bj@s8n:~$ nslookup heise.de
Server:         127.0.0.53
Address:        127.0.0.53#53

Non-authoritative answer:
Name:   heise.de
Address: 193.99.144.80
Name:   heise.de
Address: 2a02:2e0:3fe:1001:302::
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten