Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 28 lis 2024, o 20:13


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 
Autor Wiadomość
PostNapisane: 9 lut 2015, o 08:53 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Eksperymentuję właśnie z szyfrowaniem komunikacji za pomocą OpenSSL.
Napisałem własnego daemona, który nasłuchuje na określonym porcie.

Mogę się z nim połączyć za pomocą ncata i przesyłać dane w obydwie strony:

Kod:
ncat --ssl localhost <port>


Problem w tym, że jest to możliwe tylko wtedy, gdy w poleceniu użyję nazwy "localhost". W przypadku zastosowania numeru IP efekt jest następujący:

Kod:
ncat --ssl <numer IP><port>
Ncat: Connection refused.


Podobny komunikat dostaję przy próbie połączenia się z zewnątrz, za pomocą androidowego SSL clienta.

I żeby nie było: a iptables jest dodana odpowiednia formułka:

Kod:
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:<port> state NEW


Na tej samej maszynie pracuje również serwer https, z analogiczną formułką dla portu 443 i nie ma najmniejszego problemu, żeby się do niego dowołać z domowej sieci...

Co może być nie tak?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 10:01 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Sprawdź neststatem jak nadsłuchuje.

Składnia: [ Pobierz ] [ Ukryj ]
język bash
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


i wklej tu.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 10:20 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

squeez napisał(a):
Czy masz twój demon słucha na wszystkich interfejsach?


Hmm... Powinien. Nie widzę nigdzie ograniczenia w kodzie, chociaż z programowaniem Linuksa mam do czynienia od stosunkowo niedawna i w większości opieram się na przykładach z dokumentacji systemu i sieciowych tutoriali. Nie widzę jednak nigdzie w kodzie czegoś, co mogłoby blokować połączenia na innych interfejsach niż lo.

[/quote]Jaki to numer portu oraz demon na prawach roota czy usera?[/quote]

Port 32001.
Próbowałem zarówno na prawach usera jak i roota. Efekt zawsze taki sam.
Cały kod źródłowy wygląda następująco:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 15:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Na którym interfejsie demon nadsłuchuje? na eth czy na lo?

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 17:26 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

PROTON napisał(a):
Na którym interfejsie demon nadsłuchuje? na eth czy na lo?


Hmm... Pytanie zabrzmi głupio, ale jak to sprawdzić?
Do tej pory byłem przekonany, że serwer przypisany do określonego socketu słucha na każdym dostępnym interfejsie i dopiero firewall blokuje niepożądane połączenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 18:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Sprawdzisz to tym:

Składnia: [ Pobierz ] [ Ukryj ]
język bash
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2015, o 19:46 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

PROTON napisał(a):
Sprawdzisz to tym:

Składnia: [ Pobierz ] [ Ukryj ]
język bash
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Hmm...

Kod:
tcp        0      0 localhost:32001         *:*                     LISTEN


Co zrobić, żeby słuchał także na eth0 i generalnie wszystkich innych interfejsach? O tym decyduje jakaś wartość podana w kodzie źródłowym?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 lut 2015, o 09:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 12 maja 2013
Posty: 568
Zbananowany użytkownik

Pomógł: 31

Ja polecam: "Beej's Guide to Network Programming"

http://beej.us/guide/bgnet/

Gdzieś w sieci jest wersja przetłumaczona na PL.

------------------------ [ Dodano po: 8 minutach ]

Długo nie musiałem szukać:
http://cpp0x.pl/kursy/Kurs-WinSock-C++/271
http://www.asawicki.info/Mirror/Beej_s% ... /bgnet.pdf

_________________
Und schreien

Spring
Erlöse mich
Spring
...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 11 lut 2015, o 21:21 
Offline
Użytkownik

Dołączył(a): 05 gru 2013
Posty: 246
Pomógł: 0

Bardzo dziękuję za pomoc. Przerobiłem kod, podpierając się podanymi przykładami i podesłanym kursem.
Przy okazji zauważyłem błąd przy SSL_accept() - instrukcja warunkowa sprawdzała wystąpienie niepoprawnej wartości, przez co przeoczane było wystąpienie błędu.

Podczas normalnego połączenia program działa poprawnie. Zauważyłem jednak, że zaczyna się dziać coś dziwnego, gdy próbuję połączyć się z nim normalnie, przez telnet (bez SSL). Połączenie zostaje zestawone, po wysłaniu pierwszego komunikatu dostaję informację o błędzie z połączeniem SSL, ale samo połączenie nie zostaje przerwane - mogę dalej wklepywać tekst w kliencie telnmetu - musze dopiero sam zamknąć połączenie od strony klienta. Na tym jednak nie koniec - serwer przestaje po tym przyjmować kolejne połączenia (connection timeout).
Ktoś ma jakiś pomysł odnośnie tego, czego brakuje?

Na chwilę obecną kod wygląda tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 9 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO