Psybnc und mehrere IPs auf Server

fremd

Registered User
Moin

ich hab auf nem Server von s4u nen Psybnc installiert und als IP die ZusatzIP beim confen des BNCs eingestellt. Trotzdem erscheint im Whois die HauptIP des Servers

Connecten geht aber ueber die eingetragene IP. Was koennte hier das Problem sein?Oder muss ich mir dazu Premium-Revers freischalten lassen dass dann auch im Whois die 2 IP steht?

Uli
 
Last edited by a moderator:
Moin Moin,

ich weiss nicht ob du es mittlerweile geschafft hast, wenn nicht versuche ich mal kurz zu helfen.

Als erstes solltest du dich absichern, das die IPs bereits eingebunden sind. Um das zu kontrollieren machst du am besten folgendes:

Du loggst dich auf die Konsole / Shell als "root" ein und gibst folgenden Befehl ein:

shell@name> ifconfig [ENTER]

Nun solltest du eine kleinere bis groessere Liste mit den gesamten IP-Schnittstellen / Interfaces haben.

Beispiel:
Code:
Deb1an:/root/# ifconfig

eth0    Protokoll:Ethernet  Hardware Adresse 00:50:04:35:DD:61
          inet Adresse:192.168.178.22  Bcast:192.168.178.255  Maske:255.255.255.0
          EtherTalk Phase 2 Adresse:65280/38
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:296869 errors:0 dropped:0 overruns:0 frame:0
          TX packets:288367 errors:0 dropped:0 overruns:0 carrier:0
          Kollisionen:0
          RX bytes:84045896 (80.1 MiB)  TX bytes:23093186 (22.0 MiB)

Je mehr IPs du eingebunden hast desto mehr IF entstehen: eth0, eth0:1, eth0:2 usw.

Sollte dies nicht der Fall sein, musst du erstmal deine IPs eintragen.

Wenn die IPs doch schon eingetragen sind im System, startest du am besten deinen psyBNC Prozess - laesst den 1. BNC ins IRC connecten. Vergess bitte nicht auf den BNC zu connecten.
Wenn du auf dem BNC bist, gibst du folgendes ein: /bvhost <deineNeueIP bzw VHost> [ENTER]

Dann ein "kleinen" /jump eingeben und nun solltest du mit deiner neuen IP online sein.

Ich hoffe ich konnte dir erstmal weiterhelfen, sollten weitere Fragen bestehen, kannst du dich gerne melden!

-

Mit freundlichen Grüßen
Net-Spacy.com
Dennis Kühn
 
Hallo!

Ich nutze auch Psybnc mit mehreren Ips, doch bei mir stürzt der Bnc unregelmäßig ab mal nach einem Tag, mal nach einer Woche.

Der Bnc läut zwar noch aber man kann nichtmehr connecten. Weis jemand woran das liegen kann?! Mfg
 
Na dann schau doch mal was der psybnc ins log schreibt...

Was für ne fehlermeldung komtm denn beim Versuch zu connecten ?


Cu JPsy
 
Es kommt keine, es passiert einfach nix.

Das ist der letzte log eintrag.

Fri Jul 14 02:14:52 :User micmic(micmc) Keine Antwort vom Server. Beende Verbindung.
Fri Jul 14 02:14:52 :Nutzer micmic wurde getrennt vom Server.
Fri Jul 14 02:14:58 :Nutzer micmic () versucht irc.quakenet.org port 6669 (84.16.xxx.xxx).
 
Das ist ein Bug von psybnc der bislang noch nicht behoben wurde.
In den psybnc-Foren wird auch gerätselt was es ist.
Evtl. Kernel,gcc...

Auf manchen Distri läuft er, auf manchen nicht. Leider.
Ich hatte immer Probleme mit Debian 3.1. Auf SUSE 9.x lief er immer durch.

MfG, h00ch
 
Soweit ich weiss liegts am Kernel, denn einige User haben ihren Kernel umgeschrieben und haben so die Probleme beseitigt.
 
Welchen Kernel hast du denn? 2.6.x ?? oder noch den 2.4.x ? psyBNC hat einige kompatiblitaetsprobleme mit dem 2.6.x´er - das steht fest, stand auch mal auf der Seite von psyBNC.

Sonst verwende einfach alternativ ein anderen BNC-Server, gibt mittlerweile ja x andere, die besser sind...
 
Im Inet gibts irgednwo nen inoffiziellen patch. Hab den drauf und schon gehts problemlos ohne einfrieren. WEis alelrdings nimma, woher ich den hab. Musst mal gugglen nach psybns antifrost oder psybnc frost patch
 
Bug

Es handelt sich um einen FUTEX Bug, der im Zusammenhang mit dem resolving auf Systemen mit neueren Glibc-Versionen entsteht. Die genaue Ursache lässt sich jedoch nur schwer debuggen. Dementsprechend gibt es bis heute keinen Fix, sondern nur einen Workaround!
Der Bug ist bereits seit über einem Jahr bekannt und im Bug Tracking des Projects gelistet. Es sollte jedoch keiner erwarten, dass es in absehbarer Zeit einen offiziellen Fix geben wird, da das Project als "dead" deklariert wird.

dirty hack:
Code:
diff -Nrua psyBNC-2.3.2-7/config.h psyBNC-2.3.2-7-nofreeze/config.h
--- psyBNC-2.3.2-7/config.h	2005-08-28 12:12:39.000000000 +0200
+++ psyBNC-2.3.2-7-nofreeze/config.h	2006-07-20 10:53:25.000000000 +0200
@@ -58,6 +58,13 @@
 
 #define BLOCKDNS
 
+#ifdef BLOCKDNS
+/* Skip gethostbyaddr() calls that can cause freeze, because
+of some strange behavour connected with resolving and futex
+ (by GW) */
+#define NOGETHOSTBYADDR
+#endif
+
 /* Allow multiple irc connections per user */
 
 #define NETWORK
diff -Nrua psyBNC-2.3.2-7/src/p_socket.c psyBNC-2.3.2-7-nofreeze/src/p_socket.c
--- psyBNC-2.3.2-7/src/p_socket.c	2005-06-04 20:22:45.000000000 +0200
+++ psyBNC-2.3.2-7-nofreeze/src/p_socket.c	2006-07-20 10:49:35.000000000 +0200
@@ -1354,6 +1354,7 @@
       }
       memcpy(&acip6[0],addr6.sin6_addr.s6_addr,16);
 #ifdef BLOCKDNS
+#ifndef NOGETHOSTBYADDR
       signal(SIGALRM,gotalarm);
       if(setjmp(alarmret)==0x0)
       {
@@ -1362,6 +1363,7 @@
 	  signal(SIGALRM,SIG_IGN);
     	  alarm(0);
       } else
+#endif
           hostinfo=NULL;
       signal(SIGALRM,SIG_IGN);
       if(hostinfo)
@@ -1385,6 +1387,7 @@
        }
        acip=addr.sin_addr.s_addr;
 #ifdef BLOCKDNS
+#ifndef NOGETHOSTBYADDR
        signal(SIGALRM,gotalarm);
        if(setjmp(alarmret)==0x0)
        {
@@ -1393,6 +1396,7 @@
 	   signal(SIGALRM,SIG_IGN);
 	   alarm(0);
        } else
+#endif
            hostinfo=NULL;
        signal(SIGALRM,SIG_IGN);
        if (hostinfo)
 
Last edited by a moderator:
psybnc futex patch

Hello guys,
i have to say that this patch is incorrect, it does not solve the glibc problem with blocking alarm handler call.
Code:
diff -Nrua psybnc/src/p_server.c psybnc-futex/src/p_server.c
--- psybnc/src/p_server.c       2005-06-04 20:22:45.000000000 +0200
+++ psybnc-futex/src/p_server.c 2007-03-09 20:48:49.000000000 +0100
@@ -28,7 +28,7 @@
 
 #include <p_global.h>
 
-jmp_buf serveralarmret;
+sigjmp_buf serveralarmret;
 
 #ifndef BLOCKDNS
 int userproxyconnectresolved(struct resolve *rp);
@@ -1126,7 +1126,7 @@
 
 void gotalrm(int sig)
 {
-    longjmp(serveralarmret,0x0);
+    siglongjmp(serveralarmret, 1);
 }
 
 int userproxyconnected(int nuser)
@@ -1138,7 +1138,7 @@
     char gip[5];
     pcontext;
     signal(SIGALRM,gotalrm);
-    if(setjmp(serveralarmret)==0x0) 
+    if(!sigsetjmp(serveralarmret, 1)) 
     {
         alarm(10);
         he=gethostbyname(user(nuser)->server);
diff -Nrua psybnc/src/p_socket.c psybnc-futex/src/p_socket.c
--- psybnc/src/p_socket.c       2005-06-04 20:22:45.000000000 +0200
+++ psybnc-futex/src/p_socket.c 2007-03-09 20:49:21.000000000 +0100
@@ -29,8 +29,7 @@
 #include <p_global.h>
 
 #define MAX_SENDQ 1000
-
-jmp_buf        alarmret;
+sigjmp_buf     alarmret;
 #ifndef BLOCKDNS
 int acceptresolved(struct resolve *rp);
 int connecthostresolved(struct resolve *rp);
@@ -212,7 +211,7 @@
 
 void gotalarm(int sig)
 {
-    longjmp(alarmret,0x0);
+    siglongjmp(alarmret, 1);
 }
 
 /* create a single listener
@@ -577,7 +576,7 @@
        {
 #ifdef BLOCKDNS
            signal(SIGALRM,gotalarm);
-           if(setjmp(alarmret)==0x0)
+           if(!sigsetjmp(alarmret, 1))
            {
                alarm(10);
 #ifdef SUNOS
@@ -613,7 +612,7 @@
 #endif
 #ifdef BLOCKDNS
            signal(SIGALRM,gotalarm);
-           if(setjmp(alarmret)==0x0)
+           if(!sigsetjmp(alarmret, 1))
            {
                alarm(10);
                he=gethostbyname(vhost);
@@ -649,7 +648,7 @@
        sin6.sin6_port = htons(port);
 #ifdef BLOCKDNS
        signal(SIGALRM,gotalarm);
-       if(setjmp(alarmret)==0x0)
+       if(!sigsetjmp(alarmret, 1))
        {
            alarm(10);
 #ifdef SUNOS
@@ -685,7 +684,7 @@
        sin.sin_port = htons(port);
 #ifdef BLOCKDNS
        signal(SIGALRM,gotalarm);
-       if(setjmp(alarmret)==0x0)
+       if(!sigsetjmp(alarmret, 1))
        {
            alarm(10);
            he=gethostbyname(host);
@@ -1037,7 +1036,7 @@
     struct sockaddr_in6 sin6;
     struct hostent *he;
     signal(SIGALRM,gotalarm);
-    if(setjmp(alarmret)==0x0)
+    if(!sigsetjmp(alarmret, 1))
     {
        alarm(10);
 #ifdef SUNOS
@@ -1355,7 +1354,7 @@
       memcpy(&acip6[0],addr6.sin6_addr.s6_addr,16);
 #ifdef BLOCKDNS
       signal(SIGALRM,gotalarm);
-      if(setjmp(alarmret)==0x0)
+      if(!sigsetjmp(alarmret, 1))
       {
          alarm(10);
           hostinfo = gethostbyaddr( (char * )&addr6.sin6_addr.s6_addr, 16, AF_INET6);
@@ -1386,7 +1385,7 @@
        acip=addr.sin_addr.s_addr;
 #ifdef BLOCKDNS
        signal(SIGALRM,gotalarm);
-       if(setjmp(alarmret)==0x0)
+       if(!sigsetjmp(alarmret, 1))
        {
           alarm(10);
            hostinfo = gethostbyaddr( ( char * )&addr.sin_addr.s_addr, sizeof( struct in_addr), AF_INET);
 
Last edited by a moderator:
Back
Top