Usługi sieciowe na OpenWrt

NAS (ang) jest ogólnym pojęciem określającym podłączenie i udostępnienie zasobów dyskowych w sieci komputerowej. Niezbędnym elementem jest oczywiście nośnik danych w postaci wbudowanego dysku (np. dla routerów ASUS, WL-HDD), dysków zewnętrznych podłączanych przy pomocy USB (np. Linksys WRTSL54GS lub ASUS WL-500gP czy innych wyposażonych w port USB) lub kart pamięci (np. kart SD dla zmodyfikowanych sprzętowo routerów).

Dane można udostępniać na wiele sposobów: jako serwer plików FTP (SFTP), NFS, SMB (Samba)

FTP

vsftpd

Dzięki obsy mamy ładny generator pliku konfiguracyjnego po adresem http://eko.one.pl/vsftpd.php

Jednym z popularniejszych demonów ftp jest vsftpd - szybki, bezpieczny, wydajny i mały objętościowo. Instalacja sprowadza się do:

opkg install vsftpd 

Uruchomienie demona następuje po wydaniu polecenia:

/etc/init.d/vsftpd start

Zakończenie pracy:

/etc/init.d/vsftpd stop

Po instalacji serwer FTP gotowy jest do użycia: można zalogować się jako użytkownik root (z danym hasłem), katalogiem głównym jest /root.

Jeżeli wymagana jest inna konfiguracja należy wyedytować plik /etc/vsftpd.conf. Wszystkie opcje konfiguracyjne zawarte są na stronie domowej vsftpd; poniżej przedstawione zostały tylko typowe konfiguracje przydatne w OpenWrt.

Opcje wspólne:

background=YES
listen=YES
ftp_username=root
anon_root=/mnt/disc0_1
check_shell=NO
local_enable=NO
hide_ids=YES

anon_root służy do określenia katalogu głównego naszego FTP-a. W tym przypadku odnosi się do zamontowanego dysku zewnętrznego; może to karta SD lub katalog wewnątrz firmware.

Po opcjach nie powinno być spacji i innych znaków; w przeciwnym wypadku vsftpd będzie zgłaszał błędy.

Następnie należy dopisać opcje z wybranego scenariusza

1. Dostęp anonimowy do serwera, wszystko tylko do odczytu

anonymous_enable=YES

2. Dostęp anonimowy do serwera, pełne prawa (zapis i odczyt danych)

anonymous_enable=YES
write_enable=YES
anon_upload_enable=YES
anon_world_readable_only=NO
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

Jeżeli chcemy ograniczyć dostęp do określonej listy osób można umożliwić logowanie na użytkownika anonymous po podaniu odpowiedniego adresu mejlowego. W tym celu do konfiguracji należy dopisać:

secure_email_list_enable=YES
email_password_file=/mnt/disc0_1/hasla.txt
hide_file={hasla.txt}
deny_file={hasla.txt}

w pliku hasla.txt powinny znaleźć się adresy mejlowe osób uprawnionych do dostępu (w każdej linii jeden adres). Plik ten może znajdować się na udostępnionym dysku (w tym przypadku /mnt/disc0_1/hasla.txt). Opcje hide_file i deny_file odpowiedzialne są za ukrycie tego pliku i zabezpieczenie przez jego pobraniem. Logowanie: użytkownik - anonymous, hasło: jedno z adresów email podanych w pliku.

Inne wybrane ciekawe opcje:
anon_max_rate - maksymalny limit dla użytkownika anonymous
banner_file - powitanie użytkowników - tekst z pliku
ftpd_banner - powitanie użytkowników

W przypadku kiedy chcemy udostępnić serwis „na zewnątrz” należy pamiętać o dopisaniu odpowiednich regułek do firewalla

  uci add firewall rule
  uci set firewall.@rule[-1]._name=FTP
  uci set firewall.@rule[-1].src=wan
  uci set firewall.@rule[-1].target=ACCEPT
  uci set firewall.@rule[-1].proto=tcp
  uci set firewall.@rule[-1].dest_port=21
  uci commit firewall

UWAGA: Należy pamiętać że nośniki z system plików FAT mają ograniczenia co do wielkości pliku, jak również nie jest możliwe przydzielanie/odbieranie uprawnień do poszczególnych plików.

Konfiguracja z kilkoma użytkownikami

A teraz chciałem przedstawić konfigurację Ftp w taki sposób by móc korzystać z kilku różnych użytkowników gdzie każdy ma oddzielny katalog i z niego nie może wyjść :)

Konfiguracja vsftpd powinna wyglądać tak:

background=YES
listen=YES
ftp_username=root
anonymous_enable=NO
anon_root=/tmp
chroot_local_user=YES
local_enable=YES
write_enable=YES
local_umask=022
check_shell=NO

Wszystko jest raczej jasne, wątpliwości mogą być tylko tutaj: chroot_local_user=YES opcja zapobiega wyjściu danemu użytkownikowi poza swój katalog domowy.

Teraz edytujemy plik /jffs/etc/passwd i dodajemy w nowej lini wpis:

uzytkownik:*:nr:nr:uzytkownik:/katalog home uzytkownika:/bin/false

a tak powinno wyglądać mniej więcej:

Halek:*:655:655:Halek:/jffs/home/Halek:/bin/false

Zapisujemy ustawienia i wychodzimy. W home mam podmontowany dysk twardy a na nim stworzony katalog Halek. Nr musimy wpisać w obu polach takie same liczby ale nie 0 np 655

Wpisujemy: passwd Halek, zmieniamy hasło dla danego użytkownika w tym przypadku to ja :)

Takich użytkowników możemy dodać kilku z różnymi katalogami :)

Podczas logowania gdy zobaczymy błąd:

500 OOPS: vsftpd: not found: directory given in 'secure_chroot_dir':/var/run/vsftpd

musimy stworzyć katalog np. poprzez komendę:

mkdir -p /var/run/vsftpd

Dobrym sposobem jest utworzyć kilka katalogów na dysku podmontowanym z nazwami użytkowników.

pure-ftpd

Najprostrzy i najszybszy sposób na anonimowy FTP:

Instalujemy pure-ftpd

opkg update
opkg install pure-ftpd

Dodajemy użytkownika ftp z prawami dosŧepu do /mnt/hdd (zmienić wg. własnych potrzeb)

echo "ftp:*:65534:65534:ftp:/mnt/hdd:/bin/false" >> /etc/passwd

Konfiguracja pakietu:

config 'pure-ftpd'
      option 'port' '21'
      option 'chrooteveryone' '1'
      option 'maxclientsperip' '10'
      option 'maxclientsnumber' '4'
      option 'peruserlimits' '3:4'
      option 'umask' '133:022'
      option 'authentication' 'unix'
      option 'enabled' '1'
      option 'noanonymous' '0'

Włączenie serwera:

/etc/init.d/pure-ftpd start

Autostart:

/etc/init.d/pure-ftpd enable

SFTP

W najprostszym przypadku sprowadza się do instalacji odpowiedniego pakietu (oczywiście, wcześniej musi być uruchomiony demon ssh):

opkg install openssh-sftp-server

To wszystko. Można już korzystać z sftp podając jako użytkownika i hasło dane istniejącego konta w systemie (np. root).

NFS3

Instalujemy odpowiedni pakiet:

opkg install unfs3

Po instalacji należy poddać edycji plik /etc/exports. Przykładowa zawartość pliku:

/mnt/hdd (rw,all_squash,insecure)

Uruchamiamy serwer NFS:

/etc/init.d/unfs3 start

Samba

Samba umożliwia udostępnianie plików w sieci lokalnej zarówno w Linuksie jaki i Windowsie. Do poprawnego działania samby musimy zainstalować niezbędne pakiety

 opkg install samba3

Po zainstalowaniu pakietów, należy dokonać niezbędnej konfiguracji i dodania zasobów jakie chcemy udostępnić. Ustawienia Samby znajdują się w pliku /etc/config/samba i ustawienia dokonuje się za pomocą uci

Domyślna zawartość pliku:

config samba
      option 'name'                   'openwrt'
      option 'workgroup'              'openwrt'
      option 'description'    'openwrt'
      option 'homes'                  '1'
config sambashare
      option 'name'                   'tmp'
      option 'path'                   '/tmp'
      option 'read_only'              'no'
      option 'guest_ok'               'no'
      option 'create_mask'            '0700'
      option 'dir_mask'               '0700'
      #option 'users'                 'abc'

Należy upewnić się, że udostępnione katalogi faktycznie istnieją w systemie!

Jednym z ważniejszych parametrów z sekcji [global] jest workgroup, gdzie należy wpisać grupę robocza. Po sekcji [global] możemy już ustalać zasoby. Zamieszczony wyżej przykład przedstawia jak udostępniono katalog /tmp. W ten sposób możemy dodawać następne katalogi.

Teraz żeby uruchomić sambę wklepujemy:

/etc/init.d/samba start

lub dodać do automatycznego uruchamiana na starcie

/etc/init.d/samba enable

Dostęp anonimowy

Konfiguracja Samby:

config samba
      option 'name'                   'openwrt'
      option 'workgroup'              'openwrt'
      option 'description'    'openwrt'
      option 'homes'                  '0'
config sambashare
      option 'name'                   'usb'
      option 'path'                   '/mnt/hdd'
      option 'read_only'              'no'
      option 'guest_ok'               'yes'
      option 'create_mask'    '0777'
      option 'dir_mask'               '0777'
      #option 'users'                 'abc'

Restart samby

/etc/init.d/samba restart

SSH

Dzięki włączonemu demonowi SSH istnieje także możliwość przesyłania plików do/z routera przy pomocy prostej komendy scp. W OpenWrt nie trzeba nic kompilować, pliki można kopiować z routera wykonując na komputerze docelowym następujące polecenie:

scp root@nazwa_lub_ip_routera:/pelna/siezka/do/pliku .

a do routera:

scp /pełna/ścieżka/do pliku root@nazwa_lub_ip_routera:/pelna/siezka/do/pliku

HTTP

Artykuł odnośnie serwera WWW opisany jest w oddzielnym dokumencie

zastosowania/uslugi_nas.txt · ostatnio zmienione: 2011/04/17 12:10 przez arteq
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki Recent changes RSS feed Valid XHTML 1.0
Profesjonalny Hosting