kein Senior-Status trotz von außen erreichbarem Port

Keine Scheu, hier darf alles gefragt und diskutiert werden. Das ist das Forum für YaCy-Anfänger. Hier kann man 'wo muss man klicken' fragen und sich über Grundlagen zur Suchmaschinentechnik unterhalten.
Forumsregeln
Hier werden Fragen beantwortet und wir versuchen die Probleme von YaCy-Newbies zu klären. Bitte beantwortete Fragen im YaCy-Wiki http://wiki.yacy.de dokumentieren!

kein Senior-Status trotz von außen erreichbarem Port

Beitragvon Erik_S » Mo Sep 01, 2014 9:18 am

Hallo,

das yacy auf meinem PC will einfach keinen Senior-Status annehmen trotz dessen das der Port von Außen problemlos erreichbar ist, canyouseeme.org bestätigt den erreichbaren Service ebenfalls.
Es ist auch kein NAT-Router o.ä. dazwischen sondern der PC erledigt die Interneteinwahl per PPPoE direkt, ist also komplett von außen sichtbar. Andere Server auf meinem PC sind von außen ebenfalls problemlos erreichbar.
yacy ermittelt auch die richtige öffentliche IP und auf /AccessGrid_p.html sehe ich Unmengen an ankommenden Verbindungen aber yacy bleibt trotz allem beharrlich beim Junior-Status. Auch in den Peer-Listen auf anderen Peers wird mein Peer als Junior deklariert.
Ich hab yacy schon einige male neu gestartet usw. aber es ändert sich nichts.

Wie kann ich yacy dazu bewegen den Senior-Status anzunehmen?
Wie funktioniert der Mechanismus mit dem yacy seine eigene Erreichbarkeit testet? Vielleicht findet sich ja doch irgendein Problem in meiner Internetanbindung.

Grüße
Erik
Erik_S
 
Beiträge: 185
Registriert: Sa Aug 30, 2014 11:13 am

Re: kein Senior-Status trotz von außen erreichbarem Port

Beitragvon Low012 » Di Sep 02, 2014 9:27 am

Weil ich im Moment an UPnP arbeite (auch wenn das bei dir nicht relevant ist) und mir auch noch ein paar Sachen unklar sind und die Information eventuell helfen könnte:

Läuft dein Peer auf dem Standardport (8090) oder hast du den geändert?

Wie funktioniert der Mechanismus mit dem yacy seine eigene Erreichbarkeit testet?


Ich hoffe, dass ich das richtig wiedergebe:

Ein Peer weiß, dass er erreichbar ist, wenn er von anderen Peers kontaktiert werden kann.

Damit das passieren kann, verschickt der Peer die Information, dass er ein YaCy-Peer ist, welche öffentliche IP er hat und welchen Port an andere Peers, die er aus der Vergangenheit kennt. (Für den ersten Start lädt er Listen von Principal-Peers.

Die Peers schicken sich in regelmäßigen Abständen gegenseitig "Pings" (nicht im Netzwerkprotokoll-Sinne, nur bildlich gesprochen), so dass sie merken, ob andere noch da sind oder nicht und damit sie merken, ob sie selbst noch erreichbar sind.


Meine Vermutung/Befürchtung ist, dass der Port auf dem YaCy eigentlich läuft, nicht immer mit dem externen Port übereinstimmt (z.B. bei NAT im Router) und ein Peer dann z.B. sagt "ich laufe auf Port 8090", obwohl er über den von außen nicht erreichbar ist. Wenn ich UPnP fertig implementiert habe, bin ich da hoffentlich schlauer.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: kein Senior-Status trotz von außen erreichbarem Port

Beitragvon Erik_S » Di Sep 02, 2014 9:15 pm

Hallo,

Low012 hat geschrieben:Läuft dein Peer auf dem Standardport (8090) oder hast du den geändert?
Läuft auf den Standard-Ports 8090 und 8443.

Low012 hat geschrieben:Ein Peer weiß, dass er erreichbar ist, wenn er von anderen Peers kontaktiert werden kann.
Aber meinen YaCy-Peer erreichen von Außen kommende Verbindungen von anderen YaCy-Peers, ich kann die auf '/AccessGrid_p.html' sehen.

Low012 hat geschrieben:... verschickt der Peer die Information, dass er ein YaCy-Peer ist, welche öffentliche IP er hat und welchen Port ...
Das würde ich mir gerne mal genauer ansehen, kennst Du die richtige Stelle im Quell-Code dazu?

Low012 hat geschrieben:... so dass sie merken, ob andere noch da sind oder nicht und damit sie merken, ob sie selbst noch erreichbar sind.
Schon klar, an was könnte es liegen das dieses "merken" (das zweite in Deinem Satz) nicht funktioniert?

Low012 hat geschrieben:Meine Vermutung/Befürchtung ist, dass der Port auf dem YaCy eigentlich läuft, nicht immer mit dem externen Port übereinstimmt (z.B. bei NAT im Router) und ein Peer dann z.B. sagt "ich laufe auf Port 8090", obwohl er über den von außen nicht erreichbar ist.
Das trifft auf meine Situation nicht zu, mein Test-PC wählt sich direkt ins Internet ein, ohne jegliche Form von NAT oder Proxy im Weg. Leider ist das erforderlich da yacy augenscheinlich kein SOCKS-Proxy (der bei mir normalerweise die Internetverbindung herstellt) beherrscht.

Low012 hat geschrieben:Wenn ich UPnP fertig implementiert habe
Sobald sich IPv6 durchgesetzt hat kannst Du Dir das sparen. Ich will wirklich nicht unhöflich sein aber das ist Heute verschwendete Zeit, vor ein paar Jahren wäre das noch ein nützliches Feature gewesen aber derzeit wird UPnP fürs Router-NAT-Controlling langsam aber sicher obsolet.

Grüße
Erik
Erik_S
 
Beiträge: 185
Registriert: Sa Aug 30, 2014 11:13 am

Re: kein Senior-Status trotz von außen erreichbarem Port

Beitragvon Low012 » Mi Sep 03, 2014 7:55 am

Erik_S hat geschrieben:Das würde ich mir gerne mal genauer ansehen, kennst Du die richtige Stelle im Quell-Code dazu?

Nee, leider nicht, da müsste ich auch erstmal suchen, ich weiß leider nichtmal das Package.

Erik_S hat geschrieben:
Low012 hat geschrieben:... so dass sie merken, ob andere noch da sind oder nicht und damit sie merken, ob sie selbst noch erreichbar sind.
Schon klar, an was könnte es liegen das dieses "merken" (das zweite in Deinem Satz) nicht funktioniert?

Wenn ich das wüsste... Meine Vermutung, dass dein Peer den anderen Peers einen falschen Port meldet, ist ja ziemlich unwahrscheinlich, da du ja die Standard-Ports nicht geändert hast und auch noch direkt ans Internet angebunden bist.

[...] da yacy augenscheinlich kein SOCKS-Proxy (der bei mir normalerweise die Internetverbindung herstellt) beherrscht.

Ich glaube, danach hat bisher einfach niemand gefragt. ;-) Ich habe früher Opera benutzt, der damals auch kein SOCKS beherrscht hat und habe dafür tsocks benutzt. Ich denke mal, dass man das auch in das YaCy-Startskript reinfummeln könnte. Ich habe keine Ahnung, wie aufwendig eine Implementierung in YaCy wäre.

Low012 hat geschrieben:Wenn ich UPnP fertig implementiert habe
Sobald sich IPv6 durchgesetzt hat kannst Du Dir das sparen. Ich will wirklich nicht unhöflich sein aber das ist Heute verschwendete Zeit, vor ein paar Jahren wäre das noch ein nützliches Feature gewesen aber derzeit wird UPnP fürs Router-NAT-Controlling langsam aber sicher obsolet.

Ich befürchte ja, dass IPv4 uns noch ziemlich lange begleiten wird... Aber es ist ja auch nicht so, dass ich das komplett selber implementiere. Ich benutze eine Library, die sehr komfortabel zu bedienen ist und ich fixe eigentlich nur die Fehler, die in der bisherigen UPnP-Implementierung in YaCy bestehen. In diesem Zuge hoffe ich, noch den ein oder anderen Fehler zu finden, der zu den Verbindungsproblemen führt, aber da ich immer nur ab und zu mal abends für ein oder zwei Stunden was an YaCy machen kann, zieht sich das leider etwas in die Länge.
Low012
 
Beiträge: 2214
Registriert: Mi Jun 27, 2007 12:11 pm

Re: kein Senior-Status trotz von außen erreichbarem Port

Beitragvon Erik_S » Mi Sep 03, 2014 10:14 am

Hallo,

Low012 hat geschrieben:
Erik_S hat geschrieben:Das würde ich mir gerne mal genauer ansehen, kennst Du die richtige Stelle im Quell-Code dazu?
Nee, leider nicht, da müsste ich auch erstmal suchen, ich weiß leider nichtmal das Package.
Kennt vielleicht jemand anders die Stelle im Code wo alle nötigen Informationen zum Publizieren der eigenen Erreichbarkeit zusammengestellt und gesendet werden?

Low012 hat geschrieben:Meine Vermutung, dass dein Peer den anderen Peers einen falschen Port meldet, ist ja ziemlich unwahrscheinlich, da du ja die Standard-Ports nicht geändert hast und auch noch direkt ans Internet angebunden bist.
Ich denke es liegt eher daran das mein YaCy-Peer nicht richtig "merkt" das er von anderen Peers kontaktiert wird. Das er kontaktiert wird konnte ich ja sehen.

Low012 hat geschrieben:.... habe dafür tsocks benutzt. Ich denke mal, dass man das auch in das YaCy-Startskript reinfummeln könnte. Ich habe keine Ahnung, wie aufwendig eine Implementierung in YaCy wäre.
Man kann der Java-VM mitteilen das sie einen SOCKS-Proxy benutzen soll aber das scheint nur für rausgehende TCP-Client-Verbindungen zu funktionieren, TCP-Server-Sockets und UDP-Kommunikation scheint Java nicht zu beherrschen obwohl Version 5 des SOCKS-Protokolls unterstützt wird. Gerade das mit SOCKS5 auch TCP-Server und UDP funktioniert war für mich das entscheidende Kriterium einen Proxy mit diesem Protokoll zu implementieren. Ich hab SOCKS5 bereits als Server und als Client implementiert, aber immer in C, so das ich mir vorstellen kann YaCy dieses Feature persönlich beizubringen. Besteht an sowas den überhaupt Interesse?
Für mich selber wäre es eine Option ein lokales Script zu bauen das im SOCKS-Proxy einen öffentlichen TCP-Server-Socket öffnet der alle reinkommenden TCP-Verbindungen an den intern laufenden YaCy-Peer durchleitet. Für meinen Proxy ist nur wichtig das die Anforderung für einen TCP-Server-Socket vom selben Host kommt wie der der die reinkommenden TCP-Verbindungen dann intern entgegennehmen soll (also selbe IP-Adresse). Das einzigste Problem könnte sein wie YaCy dann seine öffentliche IP-Adresse erkennen soll aber eventuell kann mein Script auch einfach auf '/Settings_p.html?page=ServerAccess' diese IP-Adressen als "statische IP" eintragen.
Nimmt dieses Feld eigentlich auch mehrere IP-Adressen entgegen? Bei IPv6 ist Multihoming absolut nichts ungewöhnliches und solange mein Internet-Provider per DSL noch echtes IPv4 bietet sind immer mindestens 3 IP-Adressen vorhanden.

Low012 hat geschrieben:Ich befürchte ja, dass IPv4 uns noch ziemlich lange begleiten wird....
Vermutlich schon, aber IPv4 bekommt seit einigen Jahren ein ernstes Problem: "Carrier-Grade-NAT", DS-Lite fällt ebenfalls in diese Kategorie. Da wird es auch nichts helfen am heimischen Router per UPnP was zu drehen solange das NAT beim Provider nicht vom Kunden aus steuerbar ist und dagegen werden die Provider sich wohl mit Händen und Füssen wehren. Die Seuche "Carrier-Grade-NAT" ist seit ein paar Jahren sehr virulent unter den Providern, gerade die kleineren/jüngeren Provider haben schlicht und ergreifend gar nicht mehr genug IPv4-Adressen bekommen um damit auch nur ansatzweise alle Kunden bedienen zu können (IPv4 ist eben endgültig ausgeschöpft). Ausserhalb der westlichen Industrieländer ist das schon seit vielen Jahren ein ernstes Problem. Der einzigste Ausweg aus diesem Dilemma ist ganz klar IPv6 und genau das sollten alle Programmierer von Internet-Software aktuell forcieren, alles andere sind nur temporäre Übergangslösungen.
Ja ich weiß, "nichts hält so lange wie ein Provisorium". :D Aber das spricht nicht dagegen gleich eine anständige Endlösung zu bauen.

Grüße
Erik

edit:
mir ist gerade aufgefallen das auf der Seite '/Settings_p.html?page=ServerAccess' im Satz "ACHTUNG: Ihre aktuelle IP wird als "??.??.??.??" erkannt." die IP-Adresse des Clients (also von wo aus der Browser zugreift) enthalten ist. Ich vermute mal dass das falsch ist und hier eher die IP-Adresse des YaCy-Peers stehen sollte. Wenn YaCy Multihoming unterstützt müssten hier sogar mehrere IP-Adressen stehen.
Was passiert eigentlich wenn in dem Feld "statische IP" ein Domain-Name steht und dieser vom DNS zu mehreren IP-Adressen (vielleicht sogar mehrere IPv6-Adressen + ein oder mehrere IPv4-Adressen) aufgelöst wird?
Meiner persönlichen Meinung nach sollte YaCy alle verfügbaren IP-Adressen ans Peer-to-Peer-Netz melden und auf dieser Seite (+ der Status-Seite) angeben.

edit2:
Der "Bug" auf der Seite '/Settings_p.html?page=ServerAccess' trifft auch auf IPv6 zu, auch dann wird meine IP-Adresse (die der Browser benutzt) und nicht die des YaCy-Peers angezeigt.
Ansonsten scheinen alle HTTP/HTTPS-Zugriffe auf YaCy auch per IPv6 korrekt zu funktionieren, selbst auf '/AccessTracker_p.html?page=1' tauchen meine Zugriffe mit meiner IPv6-Adresse korrekt auf.
Ich möchte daher anregen dass das Parameter "-Djava.net.preferIPv4Stack=true" aus dem Startscript offiziell entfernt wird.
Erik_S
 
Beiträge: 185
Registriert: Sa Aug 30, 2014 11:13 am


Zurück zu Hilfe für Einsteiger und Anwender

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast