Usługi siecioweO podstawowych usługach sieciowychkonto shell'owe (ssh, scp, sftp, unix)Jest to usługa polegająca na udostępnieniu kont użytkowników na serwerze (z dostępem zdalnym przez SSH, rzadziej telnet) pozwalających na korzystanie z zainstalowanych tam programów oraz innych usług omawianych poniżej, jak również umieszczania tam swoich plików (przy pomocy SCP lub SFTP, rzadziej FTP). SSH (bezpieczny shell) jest protokołem pozwalającym na zdalną pacę w którym połączenie (a w szczególności hasło) jest kodowane, na jego bazie funkcjonują rozwiązania takie jak SCP (bezpieczne kopiowanie) pozwalający na kopiowanie plików między zdalnymi serwerami i SFTP (bezpieczny FTP) pozwalający pracować z komendami FTP przy połączeniu szyfrowanym. poczta (SMTP, POP3, IMAP)Simple Mail Transfer Protocol to protokół przesyłania poczty elektronicznej pomiędzy agentami dostarczania - MTA (jest to względnie prosty, tekstowy protokół, w którym określa się co najmniej jednego odbiorcę wiadomości (w większości przypadków weryfikowane jest jego istnienie), a następnie przekazuje treść wiadomości). SMTP (także w wersji rozszerzonej m.in. o autoryzację - zobacz SMTP-AUTH) jest często stosowany także do wysyłania poczty z programu pocztowego do pierwszego MTA. SMTP operuje kilkoma typami numerów błędów - są to podstawowe numery zdefiniowane w samym SMTP, numery rozszerzające (rozdzielane kropkami) zdefiniowane w RFC 3463 oraz numery błędów DSN (RFC 1894). Dopiero odbieranie wiadomości z serwera na którym działa MTA odbywa się przy pomocy innych protokołów takich jak POP3 (Post Office Protocol) oraz IMAP (Internet Message Transfer Protocol). IMAP jest protokołem nowszym od POP3 i posiadającym więcej funkcji m.in. obsługę już przefiltrowanej poczty umieszczanej w różnych plikach - skrzynkach (w odróżnieniu od POP3, który jest w stanie pobrać tylko wiadomości ze skrzynki systemowej, pozostawiając je tam lub kasując). Aby odbierać przez IMAP pocztę ze skrzynki systemowej jako Systemy obsługi poczty umożliwiają często konfigurację zaawansowanego jej przetwarzania po stronie serwera (takiego jak przenoszenie do odpowiednich folderów pocztowych, autoodpowiadanie, przekazywanie na inne adresy, ...) NNTPNNTP - zbliżony do poczty elektronicznej protokół grup dyskusyjnych (wiadomości wysyłane są do grupy o zadanej nazwie, przechowane są na serwerze i mogą zostać pobrane przez osoby czytające daną grupę). Protokół może być wykorzystywany na pojedynczym serwerze lub w ramach sieci serwerów (gdzie te same grupy przechowywane są na wielu serwerach, a użytkownik korzysta z "najbliższego"). W oparciu o ten protokół funkcjonuje sieć usenet. HTTP (HTML, PHP, DB)Protokół Transmisji Hipertekstu (Hypertext Transfer Protocol) - jest to obecnie jeden z najpopularniejszych protokołów internetowych. Jest on odpowiedzialny za transfer stron WWW (zarówno samego pliku HTML'owskiego jak i elementów w nim umieszczonych - grafiki, dźwięku, ...), obecnie (dzięki możliwości wznawiania przerwanej transmisji) często wykorzystywany również do przesyłu pobieranych z WWW plików. Pozwala również na transfer od użytkownika do serwera (ciasteczka (cookies), formularze, a nawet całe pliki). W budowie serwisów (oprócz HTML'a, elementów graficznych, skryptów wykonujących się w przeglądarce, ...) często korzysta się z serwerowych języków skryptowych (CGI, PHP, ...) które pozwalają na dynamiczną generację wysyłanej strony (strona sama w sobie zawiera takie same elementy jak strony tworzony w sposób statyczny). Ich wykorzystanie często łączy się z wykorzystaniem systemów baz danych (prawie zawsze są to bazy SQL, do najpopularniejszej należy system MySQL). DNSDomain Name System - system pozwalający na posługiwanie się nazwami przyjaznymi dla człowieka zamiast numerami IP (oraz translację odwrotną). Jest jednym z podstawowych protokółów Internetu. DNS oparty jest na hierarchicznym układzie domen (domena nadrzędna to pierwsza od prawej część adresu, natomiast nazwa najbardziej na lewo określa konkretny komputer w danej domenie). Serwery DNS zawierają różnego rodzaju wpisy, do najważniejszych zalicza się wpisy typu: A (zamiana nazwy na IPv4), AAAA (zamiana nazwy na IPv6), CNAME (alias), MX (serwer obsługi poczty), NS (serwer nazw obsługujący daną poddomenę), SRV (serwer obsługi zadanej usługi), PTR (DNS odwrotny). Rekordy SRV są bardzo dobrym rozwiązaniem aby móc oferować usługi zlokalizowane na różnych serwerach pod wspólną nazwą domenową, a także rozkładać obciążenie pomiędzy serwery. Jednak niestety dla wielu (głównie starszych) protokołów implementacja tego mechanizmu praktycznie nie istnieje - jest tak m.in. w wypadku SMTP (tu co prawda mamy MX ale o mniejszych możliwościach niż SRV), HTTP IRCIRC - najstarszy, ale nadal bardzo popularny protokół chatów internetowych, rozmowy odbywają się na tzw. kanałach (np. tematycznych), możliwe jest też prowadzenie prywatnej rozmowy z wybraną osobą. Protokół umożliwia tworzenie sieci serwerów przekazujących wiadomości między sobą, wtedy użytkownik komunikuje się z najbliższym siebie serwerem (sieci irc). Przekaz w czasie rzeczywistym i VoIPSieci pakietowe (w szczególności Internet) nie były tworzone z myślą o przesyłaniu danych w czasie rzeczywistym (oczywiście przesyłanie jest stosunkowo szybkie, jednak nie ma gwarancji braku opóźnień ani poprawnej kolejności odbioru pakietów). Jednak popularyzacja tych rozwiązań wraz z chęcią integracji sieci IP z systemami telefonii, radiofonii czy telewizji. O ile w przypadku tych dwóch ostatnich (podobnie jak przy większości usług multimedialnych, np. video na życzenie (VoD)) dość prostym rozwiązaniem jest buferowanie po stronie odbiornika (nawet przy transmisjach na żywo kilkudziesięcio-sekundowe opóźnienie jest zaniedbywalne w świetle opóźnień wprowadzanych na etapie realizatorskim ...). O tyle w przypadku telefonii czy wideotelefonii i usług pokrewnych (konferencje, ...) rozwiązanie to nie może być zastosowane a opóźnienia w przesyle informacji muszą być małe (inaczej rozmowa staje się uciążliwa). VoIP (Voice over IP) jest właśnie określeniem zbioru technik i protokołów służących do przesyłania głosu i obrazu w czasie rzeczywistym. Wykorzystuje się m.in. pola pozwalające na priorytetowanie ruchu IP, kompresję danych (często dostosowaną tylko do danego zagadnienia - np. mowy). SIPSession Initiation Protocol (SIP) jest dominującym obecnie standardem tego typu usług (wypiera królujący do niedawna H.323). SIP jest w zasadzie protokołem typu "peer to peer", współpracuje z Session Description Protocol (SDP), natomiast do przesyłu swoich sesji wykorzystuje pakiety protokołu RTP. Konstrukcja SIP oparta jest w zasadzie na HTTP, podobnie jak on SIP używa prostego mechanizmu żądań i odpowiedzi oraz korzysta z czystego tekstu. Metoda adresacji została natomiast zaczerpnięta z poczty elektronicznej i jest postaci "uzytkownik@host.domena:port", SIP korzysta z URI scheme "sip:" oraz domyślnego portu 5060; możliwa jest tez adresacja w stylu PSTN. Opracowywany jest też protokół IM opary na założeniach SIPu - SIMPLE. Warto wspomnie o serwerach typu registrar oraz proxy - te pierwsze służą wskazywaniu położenia klienta (ale rozmowa nie przechodzi przez ten serwer, chyba że jest do niego jawnie adresowana), te drugie przekazują rozmowę przez siebie (mogą tym samym udostępniać usługi takie jak nagrywanie rozmów itp.). Obok tych serwerów (mogą być niezależnymi usługami) funkcjonuje także nazwa domenowa konta, która w ogólności może być inna od nazw tych serwerów (ale w pewnym sensie musi być rozwijana do adresu serwera registrar. Zobacz w Sieci: Telefonia @ Wikibooks, Bezpieczeństwo VOIP opartego na SIP. XMPP/JabberBardzo interesującym wydaje się protokół XMPP/Jabber (który z dużym prawdopodobieństwem ma szansę stać się oficjalnym protokołem IM). Jest to otwarty, uniwersalny protokół rozproszonej sieci Instant Message (podobnie jak email użytkownik mający konto na serwerze X nie ma problemów z komunikacją z użytkownikiem z serwera Y (są nawet bramki do innych usług IM, takich jak GG, ICQ, ...); a nie jak dzieje się w komunikatorach tylko z użytkownikiem swojej sieci). W JEP-0111: TINS określona jest procedura inicjalizowania połączenia SIP (celem przeprowadzenia rozmowy głosowej itp). Dalszą obsługą połączenia zajmuje się już SIP. Istnieje także prawdziwie jabberowska odmiana usług VoIP (a raczej ogólnie usług P2P) - Jingle. Protokół jabbera posiada wiele interesujących cech takich jak: filtrowanie wiadomości po stronie serwera (privacy list stanowiące część XMPP), forwardowanie, potwierdzanie dostarczenia, auto-odpowiadanie itp. (Advanced Message Processing, JEP-0079), wieloadresowanie (pola cc, bcc; Extended Stanza Addressing, JEP-0033), archiwizacja wiadomości po stronie serwera (Message Archiving, JEP-0136), sprawdzanie wiadomości w trybie off-line (Flexible Offline Message Retrieval, JEP-0013). Niestety często dużo gorzej jest z implementacją - zarówno w serwerach jak i klientach (jeżeli problem jest w kliencie zawsze pozostaje konsola XML, w ten sposób na wielu serwerach już dziś można używać filtrowania - ochrona prywatności w XMPP), w wielu wypadkach mamy tez doczynienia z niestandardową implementacją jakiś usług w klientach (głównie transfer plików i VoIP). Jednak daje się zauważać jakiś postęp w tej dziedzinie - np. zarówno serwer ejabberd, jak i klient Psi posiadają w głównej gałęzi wspomniane filtrowanie (po zmianie w listach - zwłaszcza usunięciu blokady warto się przelogować). Psi (wersja 0.11) posiada także (nie uaktywnioną jeszcze - ma by6ć w 0.12) obsługę komunikacji głosowej jingle, a ejabberd (jako dodatkowe moduły) m.in. archiwizację wiadomości po stronie serwera. Gorzej jest natomiast gdy funkcjonalności brakuje na serwerze ... dla mnie osobiście największe braki w obecnej wersji jabberd2 od strony obsługi protokołu to: brak możliwości przechowywania wiadomości na serwerze (tak jak ma to miejsce w przypadku IMAPu), brak możliwości konfigurowania przekierowań, bardziej zaawansowanych autodpowiedzi (w jabberd 1.4 był jabber:iq:filter teraz jest tylko http://jabber.org/protocol/vacation), brak wieloadresowania; natomiast od strony konfiguracji serwera to: tworzenie v-hostów oraz aliasów (tak jak ma to miejsce np. w sendmail'owskim /etc/mail/virtusertable), udostępnianie pewnych usług tylko "swoim" użytkownikom (np. prawa do zakładania pokoi w ogólnie dostępnym MUC), przechowywanie danych użytkownika w $HOME. Parę rozwiązań tego typu problemów umieściłem w dziale związanym z programowaniem. telnetTelenet jest usługą internetowa pozwalająca na zdalne logowanie się na serwer i zdalną pracę. Hasło przesyłane jest jednak otwartym tekstem co nie jest bezpieczne i dlatego też usługa ta jest bardzo rzadko używana. FTPProtokół Transmisji Plików (File Transfer Protocol) - jest to usługa internetowa pozwalająca na transfer plików z serwera do komputera i z komputera na serwer. Usługa zasadniczo wymaga autoryzacji, często spotykana jest w wariancie dostępu anonimowego uprawniającego tylko do pobierania plików przez ten protokół, podobnie jak w telnecie hasło wysyłane jest jawnym tekstem. Obecnie coraz częściej wypierany przez SFTP/SCP (z dostępu autoryzowanego) i HTTP (z dostępu nieautoryzowanego). SMB (samba)Usługa wykorzystywana w sieciach lokalnych, przeznaczona głównie dla komputerów działających pod kontrolą Windows (taki substytut NFS - sieciowego systemu plików znanego z Unixów / Linuxa), pozwalająca na udostępnianie zasobów dyskowych i drukarek w sieci lokalnej. Inne usługi: finger, identd, daytime, time, ...Usługi te (w dużej mierze obsługiwane przez inetd) obecnie praktycznie nie są już używane (ale np. finger na ogół jest dostępny lokalnie) służyły one (w czasach otwartego internetu) podawaniu informacji o maszynie i jej użytkownikach, a także celom diagnostycznym (echo, chargen), były również przodkami usług obecnie powszechnie używanych (gopher -> WWW, talk -> IM, rlogin, rsh -> SSH). Wspomniany inetd / xinetd często odpowiada też za usługi dostępu do poczty, telnet i FTP. LinkiZobacz w Wikipedii: Linux, URL_(informatyka), URN Zobacz w Sieci: Voice Over Internet Protocol Guru, iPBX, Usługi telekomunikacyjne przez Internet, Siproxd, Asterisk, SIP Express Router Lista ważniejszych programów "komunikacyjnych"Programy komunikacyjneNależy tu chyba zacząć od przeglądarek internetowych - są to programy umożliwiające przede wszystkim oglądanie stron WWW (dokumentów opisanych w HTML'u i przesyłanych poprzez protokoły HTTP i HTTPS), jednak obecnie pełnią więcej funkcji z których przede wszystkim trzeba wspomnieć o obsłudze protokołu FTP. W śród nich również znajdziemy programy działające w trybie tekstowym (choćby słynny Lynx czy W3M), jak i w trybie graficznym - Mozilla i jej odmiany, Konqueror. Następną grupą programów komunikacyjnych są klienci poczty elektronicznej oraz grup dyskusyjnych (często ta funkcjonalność jest połączona w jednym programie), należy tutaj wspomnieć o tekstowym pine oraz graficznych klientach. Należy też pamiętać o programach nie będących typowymi klientami ale pomagającym nam w obsłudze poczty takich jak filtr pocztowy (procmail), narzędzie do przetwarzania nagłówków (formail, będący częścią procmail'a) i podbieracz poczty (fechmail). Kolejną ważną grupą są klienci takich usług jak telnet, ftp, ssh, scp, sftp, ..., są to najczęściej programy trybu tekstowego o takich właśnie nazwach, jak również klienci graficznie (głównie usług FTP podobnych). Wspomnieć należy jeszcze o coraz popularniejszych klientach sieci IM, umożliwiających powiadamianie o obecności w sieci, natychmiastowy przesył wiadomości, przesył plików i rozmowy głosowe (skupie się na otwartej i zdecentralizowanej sieci Jabbera), wśród klientów należy wymienić Psi, Exodus oraz tekstowy imcom (stworzony w Perlu) i centericq (obsługujący również inne sieci IM). Omawianie programów komunikacyjnych zakończyć należy na klientach p2p (sieci bezpośredniej wymiany plików), klientach protokółu VoIP oraz programach obsługujących fax-modem (faxowanie, telefonowanie, aparat zgłoszeniowy, ...) i kartę radiowo-telewizyjną.
SerwerySą to programy pracujące w trybie ciągłym i obsługujące nadchodzące (lub zaplanowane) żądania. Do najważniejszych należą serwery usług sieciowych takie jak poczty (sendmail, ...), WWW (Apache, ...), IMAP, Jabber, FTP, SSH, ... oraz wielu usług (xinetd), systemów baz danych (MySQL, PostgreSQL) . Swoistym serwerem jest też systemowy corn realizujący zaplanowane zadania w zadanym czasie. Więcej na ten temat w osobnym artykule poświęconym stawianiu serwera sieciowego.
O konfiguracji usług sieciowych w zakresie ustawień użytkownikapoczta (~/.forward, vacation, procmail, fetchmail)Plik Program
# przykładowy plik .procmailrc
# test zaczynający się od znaku # to komentarz i jest on ignorowany przez procmail
# gdy nie ma w naglowku pola "X-Envelope-To:" to dodaje pole i przekazuje do ponownie procmaila
# jako wartość pola (zmienna $dla) ustawiany jest pierwszy ($1) argument przekazany do procmaila'
# przy wywolaniu go z pliku jako lokalnego agenta dostarczania z pliku sendmail.cf - makro $h
#
# będzie on ustawiony na user1@domena gdy przy przekazywaniu poczty z tego adresu
# do rzeczywistego użytkownika - user (pliki aliases, virtusertable i .forward)
# podane będzie przekazanie do user+"user1@domena"
# (znaki "" służą do zabezpieczneia symbolu @ i będą w zmiennej wynikowej)
# zamiast adresu user1@domena można podawac dowolny inny tekst
dla=$1
:0
*!X-Envelope-To:
| formail -i "X-Envelope-To: "$dla |procmail
# pocztę adresowaną (opisywane wyżej pole X-Envelope-To:)
# do user1@domena1 umieszczam w skrzynce (pliku) mail/skrzynka1
:0
*X-Envelope-To: "user1@domena1"
mail/skrzynka1
# poczte mającą w temacie "wazne" przesyłam na swoje drugie konto (login@domena.drugiego.konta)
# i do programu vacation aby odpowiedzial na list
# jest to jedno z możliwych rozwiązań - najbardziej logiczne
:0
* ^Subject:.*wazne
{
:0 c
! login@domena.drugiego.konta
:0
|vacation
}
# na poczte od konto@jakas.domena odrazu odpowiadam
# (wysylajac zawartosc pliku odpowiedz.txt) i jej nie zapisuje
:0
* ^From:.*konto@jakas.domena
| (formail -r ; cat odpowiedz.txt) | $SENDMAIL -oi -t
Program Program ssh, scp, sftpSkładnia poleceń SSH: Przy pomocy ssh (bez scp) tez da się przesyłać pliki (w przypadku dużej ilości plików jest to metoda wydajniejsza, którą możemy także łatwo wzbogacić o kompresję):
W ~/.ssh/config możemy definiować skrócone nazwy dla hostów wraz z określeniem opcji używanych przy logowaniu (np. port, użytkownik). Ponadto nazwy hostów podane w tym pliku będą rozwijane w ramach pakietu "bash_completion" poprzez tab. Dodanie do tego pliku W przypadku systemów Windows konieczna jest instalacja programów "Putty" (do połączeń SSH, tekstowe programy scp, sftp dostarczane z Putty noszą nazwy pscp i psftp) i/lub WinSCP (graficzny interfejs do SCP) i/lub "ssh secure shell client" (terminal SSH i graficzny interfejs do SFTP). Zobacz w Sieci: SSH. Generowanie kluczy SSHSSH umożliwia także opcję nawiązywania połączeń bez potrzeby podawania hasła - wykozystuje się do tego klucze asymetryczne. Aby je wygenerować korzystamy z komendy Montowanie SFTP jako systemu plikówMożliwe jest montowanie zdalnych zasobów SFTP jako lokalnego systemu plików. Wymaga to zainstalowania pakietu z sshfs oraz załadowania modułu fuse (mechanizm fs opartego na fuse zastąpił opisywany tu niegdyś shfs stanowiący moduł jądra). Montowanie wykonujemy przy pomocy polecenia W przypadku KDE możliwe jest też korzystanie z zasobów SFTP bez ich montowania - wystarczy w Konqueror'ze wpisać sftp://uzytkownik@nazwa.serwera . Tunelowanie SSHMożliwości SSH nie kończą się na udostępnieniu zdalnego shella i możliwości bezpiecznego przesyłu plików, umożliwia on także zdalny dostęp do programów działających w trybie graficznym. Wymaga to jednak włączenia opcji przekazywania protokołu X'ów (w przypadku ssh z linii poleceń opcja -X) oraz działającego na maszynie z której się łączymy serwera X'ów (na maszynie docelowej takiego serwera może nie być w ogóle - musza być tylko stosowne biblioteki oraz program który chcemy odpalić). Po uzyskaniu połączenia shellowego z włączoną opcją przekazywania X'ów programy graficzne odpala się tak jak każdy inny program. SSH umożliwia także tworzenie tuneli przekierowujących połączenia TCP na zadany port komputera z którego wykonujemy połączenie ssh do określonego adresu IP (wraz z portem) dostępnego z maszyny (serwera ssh) do której się łączymy (może być to np. prywatny adres IP dostępny tylko wewnątrz LANu): Zobacz w Sieci: Tunelowanie połaczeń po SSH, Cygwin/X czyli Linux na Windowsie !?. SzyfrowaniePrzesyłanie danych przez Internet pod względem ich bezpieczeństwa przypomina przesyłanie ich przy pomocy kartek pocztowych - każda osoba (serwer/router) pośrednicząca w przekazywaniu może podejrzeć zawartość, ale zrobić to może także osoba będąca dostatecznie blisko i posiadająca np. lornetkę. Dlatego przy poufnych danych stosuje się ich szyfrowanie. Kolejną kwestia jest łatwość zmiany danych będących w postaci cyfrowej tudzież wyparcia się ich autentyczności/autorstwa - stąd bardzo pokrewna szyfrowaniu technika podpisu cyfrowego. Zobacz także skrypt eksportujący dane kryptograficzne (i nie tylko) - commons-config.sh OpenPGP/GnuPGDo szyfrowania oraz podpisywania danych możemy skorzystać GnuPG. Aby wygenerować klucze uruchamiamy Aby wyeksportować nasz klucz publiczny używamy komendy mkdir gpg-export-tmp-dir chmod 700 gpg-export-tmp-dir gpg -a --export-secret-keys > gpg-export-tmp-dir/sec.asc gpg --homedir gpg-export-tmp-dir --import gpg-export-tmp-dir/sec.asc gpg --homedir gpg-export-tmp-dir -a --export > public.asc rm -fr gpg-export-tmp-dir Aby zaszyfrować dane wysyłane do kogoś jego kluczem publicznym: mkdir gpg-decrypt-tmp-dir chmod 700 gpg-decrypt-tmp-dir gpg --homedir gpg-decrypt-tmp-dir --import secret.asc gpg --homedir gpg-decrypt-tmp-dir --decrypt zaszyfrowany.txt > odszyfrowany.txt rm -fr gpg-decrypt-tmp-dir Aby wygenerować podpis do wiadomości: Zobacz też: Podpis cyfrowy, Architektura klucza publicznego w Gnu Privacy Guard (GPG), oraz klucze ssh, VPN. certyfikaty x509Do szyfrowania i podpisywania możemy korzystać także z z certyfikatów takich jak wykorzystywane w połączeniach SSL. Istnieje kilka dróg generowania certyfikatów i kluczy tego typu. Możemy to zrobić np. w następujący sposób: Wygenerowany w sposób opisany powyżej zestaw certyfikatu i klucza możemy używać od razu do szyfrowania bądź do podpisywania próśb o certyfikat generowanych komendą: Na potrzeby wielu programów konieczne będzie wyeksportowanie zestawu klucza i certyfikatu do formatu PKCS#12 - Zobacz też: S/MIME, S/MIME (certyfikaty cyfrowe, identyfikatory cyfrowe) Konfiguracja serwerów sieciowychZawsze w przypadku instalowania i konfiguracji jakiejś usługi należy zapoznać się i ewentualnie poprawić plik konfiguracyjny (domyślne ustawienia najczęściej są OK, ale też prawie zawsze trzeba coś dostosować ...). Dalej przedstawię kilka uwag odnośnie konfiguracji niektórych z ważniejszych usług. Do najistotniejszych usług zaliczyłbym (w nawiasie przykładowe programy będące serwerem danej usługi): SSH/SCP/SFTP (sshd), DNS (bind), pocztę (exim), WWW (apache); warto też znaleźć miejsce na bramkę mail-www (squirrelmail), system bazodanowy (mysql) oraz webowy interfejs jego obsługi (phpmyadmin). Bardzo istotną kwestią jest także routing i podział łącza. Niestety konfiguracja wielu (zwłaszcza tych młodszych) usług nie sprowadza się wyłącznie do przygotowania plików konfiguracyjnych - często zachodzi potrzeba przygotowania własnej kompilacji programu (z nałożonymi odpowiednimi łatkami) - ma to miejsce m.in. w przypadku ejabberd'a czy squirrelmail'a (szczegóły poniżej). Problemy nastręczają także próby utrzymania wspólnej bazy użytkowników dla wszystkich usług (konta shell, poczta, www, jabber, sip); niestety dodatkowo wiele z bardziej współczesnych programów ignoruje tradycyjny unixowy charakter kont (jedno konto w systemie, tradycyjne aliasy pocztowe, konfiguracja przechowywana w $HOME, ...) - zobacz poniżej informacje o zmaganiach z konfiguracją ejabberd'a i asterisk'a. W przypadku serwerów wielo-użytkownikowych dochodzi jeszcze problem przekazania maksymalnej kontroli nad konfiguracją swoich usług w ręce użytkowników (zobacz poniżej), ewentualnie jakiś panel przez nich zarządzany. Kolejnym problemem jest często obsługa vhostów i aliasingu domen (na serwerze konta kilku firm, i niektóre z nich chcą jeszcze aby wszystko było widoczne w obu ich domenach). Generalnie w usługach serwerowych podobnie jak i w budowie sieci można wyróżnić kilka skal wielkości:
Na wstępie przedstawię też przykład organizacji kont w sieci kamienicznej (jest to chyba najtrudniejszy organizacyjnie przypadek):
SerwerConfigSwitchZamieszczam tutaj archiwum z moim systemem zarządzania konfiguracją serwerów (z archiwum po rozpakowaniu można wygenerować paczkę deb wchodząc do rozpakowanego katalogu i wydając komendę dnsW przypadku DNSu warto zwrócić możliwość na wykorzystanie * oznaczającej dowolną nazwę hosta (np. *.moja.domena.pl oznacza wszystkie adresy postaci ciag_znakow_bez-kropki.moja.domena.pl), podobnie możemy uczynić z konfiguracją webserwera (serwer wirtualny z wpisem "ServerAlias *.moja.domena.pl" będzie obsługiwał wszystkie te odwołania (dalej możemy użyć mechanizmów różnicowania położenia katalogu głównego w zależności od tego co jest podane zamiast kropki). Kolejną rzeczą o której warto wspomnieć jest konfiguracja DNS w bind9 dla IPv6. W Niekiedy mogą wystąpić problemy z zatrzymywaniem/restartowaniem binda, może to być spowodowane błędem w kluczy (lub haśle do niego) który autoryzuje komunikację binda i programu go nadzorującego. Należy wtedy przegenerować klucz ( pocztaPrzy konfiguracji poczty warto zwrócić uwagę na możliwość zapewnienia jesj filtrowania, przechowywanie jej w katalogach użytkowników oraz umieszczanie nagłówka informującego o adresie koperty - w przypadku exima jest to dość proste do uzyskania, zwłaszcza to ostatnie, które jest robione automnatycznie. Do filtrowania można wykorzystywać np. "procmail". Może on wraz z skanerami clamscan, spamassassin posłuzyć do stworzenia systemu antywirusowego i antyspamowego (przykładowy plik konfiguracyjny filtra antywirusowego). Rozważyć należy również dodanie w głównym pliku ustawień poziomu logowania: Zamieszczam też dość bogato komentowany przykładowy plik konfiguracyjny exim'a, implementujący virusertable, obsługę procmaila, plików .forward, systemu vacation oraz tworzenie kopii odbieranej poczty po stronie serwera, a także ssl i autoryzację oraz graylisty (w oparciu o greylistd) i skanowanie antywirusowe i antyspamowe na etapie kopertowym. Zamieszcam także zmodyfikowaną wersję tego pliku - służy ona do wysyłania kopii wychodzącej poczty na zadany adres i korzysta z zewnętrznego serwera SMTP wymagającego autoryzacji. Konfiguracja exima pozwala na odrzucanie wiadomości z informacją o nowym adresie (błąd SMTP 551 User not local), poprzez umieszczenie w pliku aliasów wpisu Ważne jest zapewnienie dostępu do poczty przechowywanej na serwerze - służą do tego protokoły POP i IMAP. Polecam serwer dovecot. przy jego konfiguracji warto zwrócić uwagę na uruchomienie SSL (nieszyfrowany dostęp z zewnątrz można zabronić poprzez zamknięcie portów nieszyfrowanych, a zostawienie szyfrowanych na firewallu i ustawieniu Popularnym i istotnym elementem systemów pocztowych jest bramka umożliwiająca dostęp do poczty poprzez WWW - np. Squirrel Mail. Większość takich systemów posiada dość rozbudowane opcje (konfiguracja tożsamości, książki adresowej, wersje robocze, ...), które mogą być powiększone przy pomocy dodatkowych modułów/patch'y. W przypadku wspomnianego już Squirrel Mail takie dodatki znaleźć możemy na http://www.squirrelmail.org/plugins.php, na szczególną uwagę zasługują: View As HTML, Advanced Settings (np. wyświetlanie folderów specjalnych na początku, domyślne używanie priorytetów wiadomości), S/MIME verification, Show Headers; a także: File Manager, Calendar File Backend, Notes, To-Do Reminder, NNTP webinterface, Bookmarks, Quick Save, Autocomplete, Custom From, Message Flags & Icons. wwwW konfiguracji Apacha osobiście polecałbym włączenie obsługi katalogów public_html oraz pełnej obsługi plików .htaccess, uwagę raziłbym zwrócić na ściezki gdzie zapisywane są logi - radze podawać od / i upewnić się że katalogi istnieją ... . Natomiast jeżeli występuje problem z starszymi klientami ssh (nieprzyjmowanie poprawnego hasła) to warto w konfiguracji tego serwera ustawić opcję "PasswordAuthentication yes". Jeżeli chcielibyśmy mieć wszystkie logowania ssh w pliku wtmp (wyświetlanym np. przez XMPP/JabberCiekawą i interesującą usługą jest Instant Message, a konkretniej protokół XMPP. O protokole tym i jego bolączkach wieku dziecięcego wspomniałem już wcześniej. Najciekawszym w chwili obecnej serwerem tej usługi wydaje się być ejabberd. Polecam jednak nałożenie na ten serwer łatki umożliwiającej autoryzację przez PAM (ejabberd_auth_pam.diff, łatka w obecnej wersji zawiera już moją poprawkę do niej umożliwiającą sprawdzanie czy istnieje użytkownik w oparciu o /etc/passwd, nie jest to najlepsza droga, ale na ogół zupełnie wystarczająca a wymagane to jest do działania przechowywania wiadomości off-line). Warto zainteresować się również mod_archive, dodającym implementację Message Archiving (XEP-0136), tutaj jeżeli zamienimy Wiecej patchy znaleźć można na: ejabberd.im. Wiele z opisywanych łatek jest do pobrania poprzez: Polecam także mój system powiadomień XMPP/SMTP zawierający m.in. łatką "ejabberd_log_offline_message.diff" powodującą zapisywanie wiadomości trybu offline także do plików tekstowych, które wykorzystuje w moim systemie do przesyłania powiadomień o nowych IM na e-mail. Zachęcam także do zapoznania się z zestawem moich patch'y do serwera ejabberd implementujących JID aliases. Innymi wartymi zainteresowania uzupełnieniami serwera xmpp są z pewnością: transport xmpp2xmpp (ułatwia on między innymi bycie on-line na kilku kontach równocześnie, korzystanie z adresu na innym serwerze i usług takich jak archiwizacja na innym - JID aliasing) oraz system prezentacji i zarządzania historią rozmów - Jorge. Przy konfiguracji warto zwrócić uwagę na dostęp do MUC (polecam ustawienie umożliwiające udział każdemu a zakładanie tylko swoim - Niekiedy (gdy za dużo napsujemy) mogą wystąpić problemy z startem ejabberd'a. Należy wtedy wyeksportować dane konfiguracyjne z jego bazy ( VoIP, SIP i AsteriskKolejną przydatną usługą są połączenia głosowe realizowane przez protokół IP. Jest to chyba najbardziej wymagająca dla tego protokołu usługa, gdyż wymaga ona bardzo małych opóźnień (dane spóźnione są bezużyteczne, a nie możemy też sobie pozwolić na duży bufor, gdyż usługa realizowana jest w czasie rzeczywistym). Jednak pomimo tych problemów telefonia IP (VoIP) ma liczne zalety - takie jak elastyczność, wysoka konfigurowalność i niskie koszta połączeń (nie jest potrzebny fizyczny kanał a tylko pasmo transmisji danych). Chyba najpopularniejszą softwarową centralką telefoniczną, obsługującą nie tylko VoIP ale także klasyczną telefonię jest Asterisk. Oprogramowanie to jest ponadto, w stanie rozwiązać problemy protokołu SIP z NATem (wystarczy żeby serwer asteriska miał IP z za NATu i publiczne). Prezentuję dwa najciekawszy w mojej opinii fragment konfiguracji Asteriska - konfigurację dialplanu czyli systemu numeracyjnego i sposobów zestawiania połączeń: extensions.conf (z obsługą przekierowań, blokad, systemu zarządzania kontem, zalążkiem systemu domofonowego, mechanizmem vhostów, wsparciem dla ENUM) oraz extensions-local.conf. Pozostałe ważniejsze pliki konfiguracyjne umieszczone są w archiwum systemem zarządzania konfiguracją serwerów. Asterisk posiada także pewne wady. System momentami dość upierdliwy w konfiguracji - ze względu na pojecie zestawiania połączenia przez kanały i zmiennych przypisanych do kanału (jak się robi Zobacz w Sieci: voip-info. routingIstotną funkcją w różnych systemach opartych o protokół IP jest routing. Cżesto jest on realizowany przez wyspecjalizowane urządzania (routery sprzętowe), ale równie często jego realizację przeprowadza się software'owo. Prezentuję tutaj kilka skryptów dokonujących konfiguracji takiej usługi w systemie Linux: routing.sh, routing.conf i routing_fun.sh odpowiedzialne za routing IPv4 i IPv6. Skrypty te wymagają pela wraz z NetAddr::IP::Util (pakiet libnetaddr-ip-perl w wersji conajmniej 4.007), a także pakietów iptables, iproute oraz jądra z obsługą iptables, ipv6, htb i innych (zalecana jest obsługa imq w trybie AB). Pokazane w przykładowym pliku konfiguracyjnym markowanie pakietów (ustawianie numerycznych znaczników dostępnych tylko w ramach hosta routującego) możemy użyć nie tylko jak tam pokazano do Warto zaznaczyć iż do przekierowywania usług/portów w moim zestawie konfiguracji wykorzystuje xinetd (zobacz konfigurację) a nie DNAT - co nie rodzi problemów z IPv6 oraz dwiema sieciami IP na jednym interfejsie Kolejnym popularnym zastosowaniem NATu jest chęć skierowania ruchu z jakiś adresów do danego hosta (wyświetlającego np. komunikat odnośnie przerwy w dostępie do Internetu). W przypadku IPv6, gdzie (na linuxie) nie mamy do dyspozycji NATu, możemy to zrobić modyfikując działanie DNS (odpalając sfałszowany DNS) tak aby na każde zapytanie odpowiadał adresem naszego hosta z komunikatem. Sam serwer DNS może identyfikować czy hosta należy przekierować czy nie lub możemy to oprzeć np. na różnych adresach DNS wysyłanych przez DHCP do wybranych grup hostów. Wspomniana technologia NAT (o której troszkę więcej w artykule o sieciach IP) korzysta z tablicy w której przechowuje śledzone połączenia (pamiętanie NATowanych połączeń jest konieczne aby wykonywać NAT). Aktualną ilość wpisów w tej tablicy można sprawdzić poprzez Częstym aspektem przy konfiguracji bramek (jednak tutaj praktycznie pominiętym) jest autoryzacja klientów uprawnionych do dostępu do sieci. Najpopularniejszym rozwiązaniem tego typu jest stosowanie PPPoE, spotkać się można także z wykorzystaniem autoryzacji proxy, stosowania VPN w tym celu. W systemach BSD możliwe jest także dopuszczanie użytkowników którzy nawiążą z serwerem połączenie SSH - poprzez mechanizm Authpf. Ponadto prezentuję skrypty generujące i prezentujące statystyki obciążenia łącza: traffic_stats.sh i traffic_stats_show.sh. Zobacz w Sieci: Jak podróżuje pakiet przez router linuxowy, HTB, filtry u32 i inne. Konfiguracja w ręce użytkownikówJeżeli zależy nam na samodzielności użytkowników możemy spore możliwości konfiguracyjne przekazać w ich ręce. W ogólności konfiguracja użytkownika może być wprowadza w zależności od usługi na różne sposoby - w przypadku tradycyjnych usług jak poczta i www może to być dostęp shell'owy (ssh), w przypadku jabber'a (XMPP) jest to konfiguracja przez ten protokół (konsola XML/klient) w przypadku voip (SIP) możemy dokonywać konfiguracji poprzez telefon (system menu telefonicznego). Konfiguracja przez menu telefoniczne jednak nie jest zbyt wygodna i chyba warto umożliwić użytkownikom konfigurację swoich usług poprzez odpowiednie pliki na serwerze - zamieszczam skrypt generujący zbiorczy plik konfiguracyjny dla Asteriska w oparciu o pliki zapisane w katalogach użytkowników. System, automatycznie dodaje do nazw kontekstów identyfikatory użytkowników do których one należą (dzięki czemu nie ma się możliwości grzebania w cudzej konfiguracji), działanie to oparte jest na założeniu że identyfikator odpowiadający użytkownikowi shellowemu jest w prosty sposób zależny od jego UID. System także importuje lub usuwa odpowiednie wpisy bazy danych należące do użytkownika (uwagi i założenia jak poprzednio. A następnie dokonuje zrzutu wpisów bazy danych dotyczących użytkownika do pliku w jego katalogu domowym. Inną usługą gdzie możemy chcieć aby użytkownik mógł samemu mógł wprowadzać dane konfiguracyjne jest DHCP - zamieszczam skrypt generujący w oparciu o listę mac-adresów w pliku użytkownika konfigurację dla serwera dhcp. Założenie działania skryptu jest takie iż identyfikator numeryczny grupy podstawowej użytkownika (dokładniej grupy będącej właścicielem pliku konfiguracyjnego) przekłada się w prosty sposób na system numeracji IP. Zobacz także prototypy skryptów umożliwiających dodawanie MAC adresów przez WWW - add_mac.php add_mac.sh. W przypadku omawianego w tym serwisie serwera ejabberd warto także zapewnić okresowy zrzut jego bazy danych (przechowującej m.in. ustawienia wprowadzane przez użytkowników do pliku tekstowego. Można tego dokonać okresowo wywołując: Uwaga: prezentowane powyżej programy mają status beta - przechodzą one dopiero testy i mogą pojawić się jakieś błędy. W świetle przedstawionych powyżej rozwiązań warto również rozważyć sposób stworzenia bazy domen z powiązaniem do UID/GID (tabelka domena UID, GID jeden z UID/GID == x, mająca znaczenie informacyjne, bo automatyczne generowanie konfigu z plików użytkownika odpada) a także pamiętać też należy że wywołania adduser z odpowiednimi opcjami umożliwiają określenie identyfikatorów numerycznych jakie przypisujemy użytkownikowi/grupie:
Można by stworzyć system generujący aliasy XMPP (zobacz: JID aliases) i aliasy SIP w oparciu o aliasy pocztowe (virtusertable). Główną wątpliwość budzi fakt iż raczej dość często mogą być potrzebne aliasy tylko jednego z rodzajów a nie wszystkich na raz więc może jednak lepiej utrzymywać niezależne bazy aliasów dla SMTP, XMPP i SIP. Dlatego też jak na razie nie został on prze zemnie przygotowany, ale być może kiedyś to nastąpi i go tu opublikuję. Oczywiście jak mówimy o konfiguracji to trzeba wspomnieć o programach takich jak Powiadomienia XMPP/SMTPGłównym celem prezentowanego przeze mnie systemu powiadomień XMPP/SMTP jest umożliwienie zapewnienia przepływu informacji o nowych wiadomościach pomiędzy tymi dwoma protokołami. System składa się z 4 skryptów:
Można także pobrać te programy w formie archiwum źródłowego paczki *.deb - xmpp-smtp.tgz oraz w postaci gotowej paczki dla Debiana. Zachęcam także do zapoznania się z zestawem moich patch'y do serwera ejabberd implementujących JID aliases. JID aliases (ejabberd)Pomimo podobieństw w sposobie adresacji do poczty elektronicznej, w przypadku XMPP trudno jest wymyślić działanie aliasów analogicznych do aliasów pocztowych. Problemem jest czy i jak z aliasów ma być wysyłana widoczność - jeżeli tak samo jak z konta głównego to część zastosowań traci sens oraz to czy ma być wspólna lista kontaktów dla aliasów i konta głównego czy rozdzielne - przy wspólnej także niektóre zastosowania aliasów tracą sens. Natomiast jeżeli zdecydujemy się na oddzielną prezentację i oddzielne listy kontaktów to dochodzimy do przedstawionego tutaj rozwiązania kilku kont o wspólnym haśle i opcjonalnym przekazywaniu wiadomości off-line lub ich kopii na konto główne. W przypadku nielogowania się na takie konta i korzystania z przekazania wiadomości offline, mamy analogiczne rozwiązanie jak opracowane prze zemnie metody uzyskania aliasów w jabberd i jabberd2 (szukaj w archiwum). Warto także zainteresować się stanowiącym część ejabberd'a "mod_shared_roster" Kontami podstawowymi są konta o nazwach odpowiadających kontu shell'owemu (autoryzacja PAM), ponadto dla każdego z takich kont określona jest domena podstawowa. Aliasy tworzone są na podstawie pliku tekstowego zawierającego wpisy postaci: Konta aliasowe umożliwiają logowanie, posiadają własny roadster, natomiast presence wysyłany jest tylko w przypadku zalogowania bezpośrednio na konto aliasowe. Dokładniejszy opis w skrypcie przetwarzającym ten plik na potrzeby ejabberda - ejabberd_alias_check.sh (w skrypcie tym należy także ustalić ścieżkę do pliku aliasów). Na system oprócz wspomnainego skryptu składają się dwa patch'e:
Polecam także mój system powiadomień XMPP/SMTP zawierający m.in. łatką "ejabberd_log_offline_message.diff" powodującą zapisywanie wiadomości trybu offline także do plików tekstowych, które wykorzystuje w moim systemie do przesyłania powiadomień o nowych IM na e-mail. HTTPS i ApacheAby uruchomić szyfrowany dostęp do stron WWW (poprzez Apache2) wystarczy uaktywnić moduł SSL, ustawić nasłuch na porcie 443 (standardowy port dla https) oraz skonfigurować vhosta na tym porcie z włączonym szyfrowaniem poprzez umieszczenie w jego konfiguracji: SSLEngine on SSLCertificateFile /etc/ssl/server.crt SSLCertificateKeyFile /etc/ssl/server.key Następnie musimy również przygotować odpowiednie certyfikaty - więcej na ten temat w części poświęconej szyfrowaniu z wykorzystaniem certyfikatów x509 Jeżeli wygenerowaliśmy niezależnie certyfikat CA warto w konfiguracji Apache także określić jego położenie: SSLCACertificatePath /etc/ssl/ca/ SSLCACertificateFile /etc/ssl/ca/ca.crt Należy zaznaczyć iż aby vhosty miały różne certyfikaty SSL należy je uruchamiać na rożnych portach lub adresach IP (jest to ograniczenie wynikłe z samego mechanizmu SSL). Posłużyć się należy dyrektywami: PHP, CGI, suexec - czyli (nie)bezpieczny ApachePowierzanie dostępu (prawa do odczytu) do poufnych plików (w szczególności plików haseł) użytkownikowi/grupie na prawach której chodzi serwer www (np. apache) jest pomysłem dość kontrowersyjnym, zwłaszcza w systemach wieloużytkownikowych z dostępem do PHP. Problem polega na tym że standardowo PHP działa z tymi samymi prawami co serwer www, zatem jeżeli jakiś plik ukryjemy przed innymi użytkownikami a damy do niego dostęp serwerowi www, to każdy kto może wykonać skrypt PHP przez WWW na tym serwerze będzie miał dostęp do naszego poufnego pliku. Problem ten w szczególności dotyczy też stron zabezpieczanych hasłem przez autoryzację Apache (umieszczaną np. w plikach .htaccess) gdyż nawet gdy plik będzie dostępny dla właściciela i grupy, a będzie maił zabroniony dostęp dla innych użytkowników musi mieć do niego dostęp serwer www (najczęściej przez prawa grupy) a zatem i inni użytkownicy przez PHP. Pewnym rozwiązaniem tych problemów jest użytkowanie PHP jako CGI (w pierwszej linijce Na koniec warto zwrócić uwagę że program suexec ma wkompilowaną na stałe w siebie ścieżkę na której musza być uruchamiane z prawami innego użytkownika skrypty (niestety nie jest ona ustawiana żadną dyrektywa konfiguracyjną), jest to ścieżka położenia pliku a nie dojścia do niego więc symlinki z ścieżki do katalogów z root vhostow nie pomogą (w razie wielkich trudności można ustawić przy kompilacji / ale nie jest to zalecane). Warto też zaznaczyć że php przeznaczone do pracy z linii komend w odróżnieniu od wersji kompilowanej dla cgi ma problemy z nagłówkami - nagłówki trzeba wysyłać na samym początku skryptu przez ich wypisywanie (np. echo), a nie przez funkcję header(); wersja cgi domyślnie wysyła też nagłówek określający że jest to html. Kolejnym problemem jest że skrypty chodzące na prawach serwera www mogą wywołać suexec i odpalić inny skrypt na większych prawach niż posiada serwer www (suexec chodzi z SUID root), zatem zabawa z suexec traci sens gdy pozostaje możliwość odpalenia jakiegokolwiek polecenia z prawamui użytkownika serwera www. Można nawet zaryzykować stwierdzenie że sama obecność suxec w takich systemach stanowi więcej zagrożenia niż pożytku ... . Inne ustawienia i uwagiMogłoby się wydawać iż oprócz logowania ruchu przechodzącego (omawianego w części dotyczącej routingu) warto rozważyć logowanie tablicy arp (odpowiedniości numerów sprzętowych i IP) - realizuje to np. następujący skrypcik - arp_log.sh, jednak po bliższym przyjżeniu się logom ruchu zauważyć w nich można oprócz adresów IP MAC adresy kart, więc jest to zbędne. Na koniec proponuję dodanie do /etc/cron.daily/ skryptu wywołującego Przydatne może być też zmienienie portu na którym słucha SSH ze względu na boty próbujące się logować i zaśmiecające nam logi. Zobacz też w Sieci: Blokowanie ssh po nieudanych próbach logowania. Zachęcam także do zapoznania się z moimi artykułami o: konfiguracji sieci, konfiguracji linuxa, podstawach linuxa. Zobacz w Sieci: kravietZ: IPv6 i Linux, Przewodnik po budowie routera IPv6 w Gentoo, MySQL - zapomniane hasło root. Bridge, VLAN i trunkingW oparciu o komputer z linuxem i kilkoma kartami sieciowymi na pokładzie możemy zrobić nie tylko (opisany powyżej) routing ale także zarządzany switch ("routing" ramek ethernetowskich pomiędzy kartami). Do utworzenia oraz zarządzania mostem składającym się z kilku interfejsów sieciowych (powinny one być zdekonfigutowane od strony IP gdyż od momentu włączenia do bridge'a stają się jego portami) służy komenda
Bridge ma niekiedy problemy z włączonymi do niego urządzeniami wifi. Związane jest to z ograniczeniami tego standardu, a przede wszystkim z wymogiem iż urządzenie klienckie (w trybie client) może prezentować tylko jeden MAC adres. Zatem aby mogło ono być elementem bridge'a należy zastosować odpowiednie maskowanie MAC-adresów w ebtables. Innym ominięciem tego problemu w AP jest tryb Wireless Distribution System. Kolejnym aspektem związanym z warstwą ethernetową są VLANy, umożliwiające tworzenie wirtualnych sieci w warstwie ethernetowej. Oczywiście możliwa jest przeźroczysta dla komputerów końcowych konfiguracja VLANów (switche wiedzą na którym porcie mają jaki VLAN i pakiety danego VLANu wysyłają tylko do / odbierają tylko z portów które do niego należą. Ma to częste zastosowanie gdy VLANy używane są ze względów bezpieczeństwa. Ciekawym przypadkiem jest jednak gdy komputer otrzymuje znaczniki VLANu i sam może identyfikować z którego VLANu do którego należy jest dany pakiet. Do tworzenia takich VLANów oraz zarządzania nimi służy komenda Inną ciekawą możliwością jest port trunking (bonding) polegający na połączeniu kilku interfejsów w jeden o większej prędkości. Wymaga on załadowania modułu bonding z parametrem mode określającym typ tworzonego połączenia interfejsów. Taki wirtualny interfejs uruchamiany jest przy pomocy NAT-PT czyli brama pomiędzy IPv6 a IPv4Przynajmniej w okresie przejściowym wdrażania IPv6 konieczne może się okazać zapewnienie sieci IPv6-only dostępu do zasobów sieci IPv4. W tym celu stosuje się rozwiązania typu NAT-PT, wykonujące translację adresów pomiędzy IPv6 i IPv4. W odróżnieniu od zwykłych NATów muszą one także podmieniać zapytania i odpowiedzi DNS tak aby mapować adres IPv4 hosta docelowego w przestrzeni adresowej IPv6 i zwracać ten zamapowany adres jako odpowiedź na rządanie AAAA. Przykładem realizacji takiego mechanizmu jest daemon (mechanizm ten - chyba nawet w BSD oferującym w odróżnieniu od Linuxa NAT dla IPv6 - realizowany jest poza jądrem systemu) naptd. Instalacja i konfiguracja jest szczegółowo opisana w załączonej dokumentacji. Należy jednak zwrócić uwagę blokadę przekazywania prefixu używanego przez NAT-PT na routerach IPv6 - podstawy testowania protokołów sieciowych - telnet i netcatWiększość podstawowych protokołów sieciowych wykorzystuje w komunikacji wiadomości przesyłane zwykłym tekstem (ASCII), dlatego też do ich testowania możemy wykorzystać klienta telnetu (lub bardziej zaawansowany netcat mogący też pełnić rolę serwera przyjmującego połączenia). Do usług takich należy WWW (protokół HTTP) gdzie po połączeniu się z (standardowo) portem 80 serwera i wysłaniu stosownego komunikatu otrzymamy nagłówki HTTP odpowiedzi oraz jej treść (dane tekstowe np. HTML bądź dane binarne np. obrazek). Wspomniana treść żądania może wyglądać następująco (kończy się wysłaniem pustej linii): GET / HTTP/1.1 Host: www.opcode.eu.org Podobnie jest w protokołach SMTP (przesył poczty elektronicznej) - tutaj możemy korzystając z tej metody wysyłać listy z np. sfałszowanymi nagłówkami, XMPP (jabber), POP3, IMAP, ... . Szczegółowe opisy składni poszczególnych protokołów znaleźć możemy w dokumentach RFC. | |
|
|
Copyright (c) 1999-2008, Robert Paciorek (http://www.opcode.eu.org/), BSD-type license
Redystrybucja wersji źródłowych i wynikowych, po lub bez dokonywania
modyfikacji JEST DOZWOLONA, pod warunkiem zachowania niniejszej informacji o
prawach autorskich. Autor NIE ponosi JAKIEJKOLWIEK odpowiedzialności za skutki
użytkowania tego dokumentu/programu oraz za wykorzystanie zawartych tu informacji.
This program is free software. Redistribution and use in source and binary
forms, with or without modification, ARE PERMITTED provided save this copyright
notice. This document/program is distributed WITHOUT any warranty, use at YOUR
own risk.
Dokument ten (URL: http://www.opcode.eu.org/sieci_komputerowe_uslugi)
należy do serwisu OpCode. Autorem tej strony jest Robert Paciorek,
wszelkie uwagi proszę kierować na adres e-mail serwisu: webmaster@opcode.eu.org.
Data ostatniej modyfikacji artykulu: 2008-11-08 00:39:24 (UTC) (data ta może być zafałszowana niemerytorycznymi modyfikacjami artykułu).