MediathekView icon indicating copy to clipboard operation
MediathekView copied to clipboard

Netzwerkfehler in NAT64-Umgebung (MV14.0.0)

Open DarkAyron opened this issue 1 year ago • 6 comments

In DSlite Umgebung mit NAT64 tritt sofort nach dem Start von MediathekView folgender Fehler auf:

java.net.SocketException: Network is unreachable
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:580)
	at java.base/sun.nio.ch.Net.connect(Net.java:569)
	at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:576)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
	at java.base/java.net.Socket.connect(Socket.java:666)
	at okhttp3.internal.platform.Platform.connectSocket(Platform.kt:128)
	at okhttp3.internal.connection.ConnectPlan.connectSocket(ConnectPlan.kt:254)
	at okhttp3.internal.connection.ConnectPlan.connectTcp(ConnectPlan.kt:128)
	at okhttp3.internal.connection.SequentialExchangeFinder.find(SequentialExchangeFinder.kt:33)
	at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:267)
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:84)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:65)
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:205)
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:158)
	at mediathek.filmlisten.FilmeLaden.hasNewRemoteFilmlist(FilmeLaden.java:101)
	at mediathek.filmlisten.FilmeLaden.performUpdateCheck(FilmeLaden.java:162)
	at mediathek.filmlisten.FilmeLaden.loadFilmlist(FilmeLaden.java:181)
	at mediathek.mainwindow.MediathekGui.lambda$loadFilmlist$15(MediathekGui.java:479)
	at java.base/java.util.concurrent.CompletableFuture$UniRun.tryFire(CompletableFuture.java:787)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1810)
	at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:387)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1312)
	at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1843)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1808)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:188)
	Suppressed: java.net.SocketException: Network is unreachable
		... 34 more

Der Fehler lässt sich folgendermaßen reproduzieren:
Rechner an einen Router mit NAT64 anschließen, IPv6 und DNS-Server mit DNS64 konfigurieren, IPv4 abschalten. MediathekView starten.

DarkAyron avatar Mar 15 '24 23:03 DarkAyron

Guck ich mir an

alex1702 avatar Mar 18 '24 07:03 alex1702

@DarkAyron Welche Version von MV nutzt Du und ist es die offizielle Binary? Ich gehe davon aus das Betriebssystem ist Windows?

derreisende77 avatar Mar 19 '24 13:03 derreisende77

Ich verwende die offizielle Version von https://mediathekview.de/download/ (MediathekView-latest-linux.tar.gz, sha1sum: b627e965acc0f47d91b4dd890b4941594dbb6c9b) Gestartet über den im Archiv enthaltenen Shellscript (MediathekView) Betriebssystem ist gentoo linux (no-multilib) Java ist openjdk 17.0.8.1_p1(17){tbz2}(17:30:46 10/01/24)(alsa cups doc jbootstrap source system-bootstrap -big-endian -debug -examples -headless-awt -javafx -lto -selinux -systemtap)

DarkAyron avatar Mar 21 '24 20:03 DarkAyron

MV verwendet sein eigenes mitgeliefertes Java, da wir dadurch bessere Kontrolle haben. OOTB ist MV nicht für IPv6 Betrieb ausgelegt sondern auf IPv4 fixiert da wir in der Vergangenheit Probleme primär unter Windows damit hatten und das "feature" auf anderen Systemen keine Auswirkungen zeigte. Da Du Linux nutzt gehe ich davon aus dass das Ändern von Konfigurationsdateien bei dir keinen Angstschweiß erzeugt, denn dadurch solltest Du in der Lage sein, MV auch mit IPv6 bei dir betreiben zu können. Leider habe ich noch keine Einstellung dafür in den Einstellungen programmiert, werde es aber zeitnah integrieren.

Anleitung:

  • Beende MV
  • nano ~/.mediathek3/settings.xml
  • Füge dort nach Zeile 3 (<application>) folgende Zeilen ein:
<networking>
      <dns>
        <ip_mode>system</ip_mode>
      </dns>
    </networking>

ip_mode kann folgende Werte annehmen:

  • system: Nutze OS-Vorgaben
  • ip_v6: Bevorzuge IPv6, nutze aber auch IPv4
  • ip_v4: Bevorzuge IPv4, nutze aber auch IPv6
  • ip_v6_only: Nutze nur IPv6, IPv4 wird ignoriert
  • ip_v4_only: Nutze nur IPv4, IPv6 wird ignoriert (Standard MV)

Damit solltest Du in der Lage sein MV auch mit einem reinen IPv6 System betreiben zu können.

derreisende77 avatar Mar 21 '24 21:03 derreisende77

@DarkAyron Konntest Du die Modifikationen testen?

derreisende77 avatar Mar 29 '24 13:03 derreisende77

Ich bin leider zur Zeit unterwegs. Ich teste es, sobald ich wieder zu Hause bin

DarkAyron avatar Mar 29 '24 19:03 DarkAyron

Das Problem ist doch einfach, dass Java kein Happy Eyeballs kennt. Wenn IPv6 aktiviert ist, dann wird die Verbindung nur über IPv6 versucht. Wenn Leute da aber bei sich rumgespielt haben (IPv6 iSt BöSe!!!! /s), gibt es kein Fallback auf IPv4.

Anstatt die Leute dazu anzuhalten, ihre IPv6-Probleme zu beheben, hat man sich dann bei MV leider dazu entschieden, IPv6 per Default einfach zu deaktivieren.

Wurde mit Version 13.6 "eingeführt": https://mediathekview.de/changelog/13-6-0/

treysis avatar Jun 09 '25 12:06 treysis