Instalacja serwera proxy dla małej sieci
Ostatnia zmiana: 2015-07-18 08:50


Tinyproxy jest serwerem proxy umożliwiającym filtrowania treści. Ma stosunkowo małe wymagania systemowe; możliwość filtrowania linków czy nagłówków zapytań czyni z niego idealne rozwiązanie dla małych sieci.

Instalacja

Instalacja jest prosta i sprowadza się do poleceń


    # opkg update
    # opkg install tinyproxy

Konfiguracja

Konfiguracja znajduje się w pliku /etc/config/tinyproxy. Domyślna konfiguracja jest prawie właściwa i wystarczy zmienić tylko kilka linii żeby proxy włączyć:


    # uci set tinyproxy.@tinyproxy[0].enabled=1
    # uci add_list tinyproxy.@tinyproxy[0].Allow='192.168.1.0/24'
    # uci commit tinyproxy

Pierwsza opcja pozwala na włączenie działania Tinyproxy. Druga opcja pozwala na dostęp z określonych adresów ip. Oczywiście, klasę sieci należy dobrać do stosowanej adresacji.

Uruchomienie



    # /etc/init.d/tinyproxy enable
    # /etc/init.d/tinyproxy restart

Teraz w konfiguracji przeglądarki WWW należy zdefiniować proxy na adres rutera (np. 192.168.1.1) i port 8888 (czyli taki jak podano w konfiguracji). Po wczytaniu strony cała informacja powinna już iść przez nasz serwer proxy.

Filtrowanie treści

Sprowadza się do wpisania odpowiednich słów kluczowych do określonego pliku. Najpierw trzeba włączyć filtrowanie, a odbywa się to przez ustawienie dwóch opcji w pliku konfiguracyjnym:


    # uci set tinyproxy.@tinyproxy[0].Filter="/etc/tinyproxy/filter"
    # uci set tinyproxy.@tinyproxy[0].FilterURLs="On"
    # uci commit tinyproxy

Pierwsza opcja definiuje położenie pliku z filtrami, druga włącza filtry. UWAGA: włączenie filtrowania adresów może spowodować większe zużycie pamięci rutera.
Teraz należy w pliku /etc/tinyproxy/filter umieścić odpowiednie słowa kluczowe, po których ma być filtrowany dostęp, np.


    # echo "nasza-klasa.pl" >> /etc/tinyproxy/filter
    # echo "images" >> /etc/tinyproxy/filter

Należy zrestartować proxy


    # /etc/init.d/tinyproxy restart

I spróbować wczytać stronę np. nasza-klasa.pl - powinien pokazać się komunikat o braku dostępu to tej strony. W ten sam sposób można zrealizować blokowanie reklam umieszczając filtry typu /block/ czy /ads/.

Plik konfiguracyjny jest dość dobrze opisany. Z innych ciekawych opcji do ustawienia należy wymienić:

  • Listen - możliwość określenia na którym interfejsie ma słuchać Tinyproxy. Warto ustawić dla interfejsu lan (czyli np. 192.168.1.1)
  • Port - port na którym słucha serwer
  • StartServers - liczba jednoczesnych uruchomionych procesów. warto zmienić z 10 np. na 2, szczególnie dla ruterów z mała ilością pamięci.
  • Anonymous - usuwanie nagłówków żądań http
  • LogLevel - zmienia liczbę komunikatów w logu

Zakończenie

Strony informacyjne Tinyproxy można dowolnie zmienić stosowanie do wymagań - informacja o tych stronach przechowywana jest w pliku konfiguracyjnym. Dzięki Tinyproxy można utworzyć w pełni funkcjonalny serwer filtrujący dla małej sieci, zabezpieczający przez dostępem do niechcianych stron, czy wycinający niektóre nagłówki z żądań przeglądarek. Dzięki małemu zapotrzebowaniu na zasoby można go zainstalować nawet na małych routerach wyposażonych tylko w 16MB ramu.

Konfigurację można także wykonać "graficznie" instalując pakiet luci-app-tinyproxy (dla LuCI).

Lista opcji konfiguracyjnych: https://github.com/banu/tinyproxy/blob/master/etc/tinyproxy.conf.in

Szybka konfiguracja wg UCI



    # opkg install tinyproxy
    # uci set tinyproxy.@tinyproxy[0].enabled=1
    # uci add_list tinyproxy.@tinyproxy[0].Allow='192.168.1.0/24'
    # uci commit tinyproxy
    # /etc/init.d/tinyproxy enable
    # /etc/init.d/tinyproxy restart

Transparent Proxy



    # uci add firewall redirect
    # uci set firewall.@redirect[-1].name=transparent-proxy
    # uci set firewall.@redirect[-1].src=lan
    # uci set firewall.@redirect[-1].proto=tcp
    # uci set firewall.@redirect[-1].dest_port=8888
    # uci set firewall.@redirect[-1].src_dport=80
    # uci set firewall.@redirect[-1].src_dip='! 192.168.1.1'
    # uci set firewall.@redirect[-1].dest_ip=192.168.1.1
    # uci commit firewall
    # /etc/init.d/firewall restart

Przykład zastosowania

Wyłączenie kompresji obrazków dla Orange Free na Kartę. Można to zrobić zmieniając APN na "vpn", ale także dodając do żądań http odpowiednie nagłówki: Pragma no-cache oraz Cache-Control no-cache. Instalujemy Tinyproxy wg sposobu przedstawionego powyżej a następnie dodajemy do pliku /etc/rc.local następującą zawartość (na początku pliku):


    echo "AddHeader \"Pragma\" \"no-cache\"" >> /var/etc/tinyproxy.conf 
    echo "AddHeader \"Cache-Control\" \"no-cache\"" >> /var/etc/tinyproxy.conf 
    killall -SIGHUP tinyproxy

Po restarcie można cieszyć się już brakiem kompresji.