OpenWrt - Tinyproxy
Instalacja serwera proxy dla małej sieci
Ostatnia zmiana: 2013-01-24 18:04

1. Instalacja
2. Konfiguracja
3. Uruchomienie
4. Filtrowanie treści
5. Zakończenie
6. Szybka konfiguracja wg UCI
7. Transparent Proxy
8. Przykład zastosowania


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 set 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://banu.com/docs/tinyproxy/1.8.2/man5/tinyproxy.conf.html
Szybka konfiguracja wg UCI

    # opkg install tinyproxy
    # uci set tinyproxy.@tinyproxy[0].enabled=1
    # uci set 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.