Re: Simple cell with standalone router/server + backup

"Elvis Stansvik" <[email protected]> Sat, 13 Sep 2008 13:00:50 +0200
Newsgroups gmane.network.silc.user
Message-ID <[email protected]>
2008/9/13 Elvis Stansvik <[email protected]>:
> 2008/9/12 Elvis Stansvik <[email protected]>:
>> 2008/9/12 Pekka Riikonen <[email protected]>:
>>> : > Unfortuantely the current silcd requires ServerConnection entry, real or
>>> : > dummy, for it to recognize that it is router.  This will be fixed in 1.2.
>>> : > I'm not sure if the backup router stuff requires IP addresses instead of
>>> : > host names, but you may also attempt to use only IP addresses and see if
>>> : > it makes a difference, also.
>>> :
>>> : Hm. Okay. I tried making it a dummy connection like you suggested, and
>>> : also changed to using only IP addresses, but still tcpdump shows
>>> : absolutely no traffic on port 706 between the two hosts when I do
>>> : state changing stuff like e.g. /join foo followed by /cmode foo +f.
>>> :
>>> The backup router configuration is wrong as well.  The backup router needs
>>> to use the primary router as its primary router connection and thus use
>>> RouterConnection.   But because it is also router it also must have real
>>> or dummy ServerConnection entry:
>>>
>>> ServerConnection {
>>>  host = "dummy";
>>>  backup = true;
>>> };
>>>
>>> RouterConnection {
>>>  host = "silc.dose.se"
>>>  initiator = true;
>>> };
>>>
>>> Backup router must initiate connection to primary.
>>>
>>> Primary then has:
>>>
>>> ServerConnection {
>>>  host = "dummy";
>>> };
>>>
>>> RouterConnection {
>>>  host = "silc2.dose.se"
>>>  backuphost = "silc.dose.se"
>>>  backupport = 706;
>>>  backuplocal = true;
>>> };
>>>
>>> I tested this and it worked...
>>
>> Thanks a lot for your patience with me. I see how I got it wrong now.
>> However after I've adjusted my configuration to be:
>>
>> Backup Router
>> --------------
>> ServerConnection {
>>        Host = "dummy";
>>        Backup = true;
>> };
>> RouterConnection {
>>        Host = "silc.dose.se";
>>        Port = 706;
>>        PublicKey = "/opt/etc/silc.dose.se.pub";
>>        Params = "normal";
>>        Initiator = true;
>> };
>>
>> Primary Router
>> ---------------
>> ServerConnection {
>>  Host = "dummy";
>> };
>> RouterConnection {
>>  Host = "silc2.dose.se";
>>  PublicKey = "/usr/local/etc/silc/silc2.dose.se.pub";
>>  BackupHost = "silc.dose.se";
>>  BackupPort = 706;
>>  BackupLocal = true;
>> };
>>
>> I first start up silcd on the primary router like this:
>>
>> [astan@franz /var/log/silc]$ sudo silcd -D 99
>> [Logging] [Info] SILC Server started
>>
>> But then when I start up silcd on the backup router, I get a segfault
>> on the primary:
>>
>> [Logging] [Info] Incoming connection h251n2fls33o879.telia.com (213.66.197.251)
>> Segmentation fault: 11 (core dumped)
>>
>> It segfaults right at the connection attempt from the backup. Got any
>> ideas off the top of your head about this, or should I bring out gdb?
>> :)
>
> I now compiled silc-server with --enable-debug on the primary router
> and got a backtrace from the segfault:
>
> Starting program: /usr/home/astan/silc/sbin/silcd -f
> /usr/local/etc/silc/silcd.conf -D 99
> [New LWP 100212]
> [New Thread 0x28401100 (LWP 100212)]
> [New Thread 0x28401200 (LWP 100162)]
> [Thread 0x28401200 (LWP 100162) exited]
> [New Thread 0x28401200 (LWP 100162)]
>
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x28401100 (LWP 100212)]
> silc_pkcs_public_key_copy (public_key=0x0) at silcpkcs.c:637
> 637       key->pkcs = public_key->pkcs;
> #0  silc_pkcs_public_key_copy (public_key=0x0) at silcpkcs.c:637
> #1  0x08061ff5 in silc_server_accept_completed (ske=0x284490c0,
> status=SILC_SKE_STATUS_OK, prop=0x284058a0,
>    keymat=0x2840eca0, rekey=0x2840b820, context=0x2842c080) at server.c:2578
> #2  0x0810f8ee in silc_ske_st_responder_end (fsm=0x28449124,
> fsm_context=0x284490c0, state_context=0x0)
>    at silcske.c:969
> #3  0x080b0db4 in silc_fsm_run (schedule=0x2841f1a0,
> app_context=0x28406140, type=0, fd=0, context=0x28449124)
>    at silcfsm.c:429
> #4  0x080b0eb1 in silc_fsm_continue_sync (fsm=0x28449124) at silcfsm.c:309
> #5  0x0810afbd in silc_ske_packet_receive (engine=0x2840f1f0,
> stream=0x2842c080, packet=0x2840eb20,
>    callback_context=0x284490c0, app_context=0x2842c0f0) at silcske.c:121
> #6  0x08094c14 in silc_packet_dispatch (packet=0x2840eb20) at silcpacket.c:2054
> #7  0x08098b10 in silc_packet_read_process (stream=0x2842c080) at
> silcpacket.c:2318
> #8  0x0809ae84 in silc_packet_stream_io (stream=0x2840ebb0,
> status=SILC_STREAM_CAN_READ, context=0x2842c080)
>    at silcpacket.c:436
> #9  0x08118de6 in silc_socket_stream_io (schedule=0x2841f1a0,
> app_context=0x28406140, type=SILC_TASK_READ,
>    fd=10, context=0x2840ebb0) at silcunixsocketstream.c:36
> #10 0x080a879a in silc_schedule_dispatch_fd (schedule=0x2841f1a0) at
> silcschedule.c:61
> #11 0x080a99e5 in silc_schedule_iterate (schedule=0x2841f1a0,
> timeout_usecs=-1) at silcschedule.c:455
> #12 0x080a9abc in silc_schedule (schedule=0x2841f1a0) at silcschedule.c:499
> #13 0x0805900f in silc_server_run (server=0x28406140) at server.c:1192
> #14 0x080503b5 in main (argc=Error accessing memory address 0x0: Bad address.
> ) at silcd.c:753
>
> It seems that the key is NULL for some reason, not sure what to make
> of it. Maybe it's a missing NULL-check somewhere or the value really
> shouldn't be NULL there. So I tried with simple passphrase
> authentication instead of using PublicKey, and then I get on the
> primary router:
>
> [astan@franz ~/silc/sbin]$ sudo ./silcd -f /usr/local/etc/silc/silcd.conf -D 99
> [Logging] [Info] SILC Server started
> [Logging] [Info] Incoming connection h251n2fls33o879.telia.com (213.66.197.251)
> [Logging] [Error] Remote connection not configured
> [Logging] [Error] Authentication failed
> [Logging] [Info] Authentication failed for h251n2fls33o879.telia.com
> (213.66.197.251) [Unknown]
> [Logging] [Info] Closing connection h251n2fls33o879.telia.com:25591 [Unknown]
>
> Sorry for all the troubles, but I really think it should work when I
> use just Passphrase. Any more ideas?

I forgot to say, I also tried without any authentication, no
Passphrase and no PublicKey, and I still get the above connection
failure.

Elvis

>
> Elvis
>
>>
>> Elvis
>>
>>>
>>> : > All state data is transferred, topics, modes, clients, channels, servers,
>>> : > etc.
>>> :
>>> : Okay that's great. I forgot to ask though; are the public keys that
>>> : the server read in from PublicKeyDir considered state data? So that if
>>> : I at some point E would actually allow client connections to my backup
>>> : router, could my clients authenticate with their public keys to the
>>> : backup router and it would work? E.g. the keys would have been
>>> : transferred to the backup?
>>> :
>>> Public keys are not transferred.
>>>
>>>        Pekka
>>> ________________________________________________________________________
>>>  Pekka Riikonen                                 priikone at silcnet.org
>>>  Secure Internet Live Conferencing (SILC)       http://silcnet.org/
>>>
>>
>

_______________________________________________________________
Info:    https://lists.silcnet.org/mailman/listinfo/silc-users
Archive: https://lists.silcnet.org/pipermail/silc-users
FAQ:     http://silcnet.org/support/faq/