User:Wacek/brudnopis polipo

From ArchWiki
Warning: Polipo is no longer maintained, It's recommended to use another solution (Squid, Privoxy...) instead.

Ze strony Polipo:

"Polipo to mały i szybki buforujący serwer proxy sieci Web (pamięć podręczna sieci Web, serwer proxy HTTP, serwer proxy), podczas gdy Polipo został zaprojektowany do użytku przez jedną osobę lub niewielką grupę ludzi, nic nie stoi na przeszkodzie, aby był używany przez większą grupę." W przeciwieństwie do Squid, Polipo jest bardzo lekkie i łatwe do skonfigurowania. To sprawia, że idealnie nadaje się do systemów z jednym użytkownikiem i innych nieskomplikowanych ustawień. Należy jednak pamiętać, że ta wszechstronność ma swoje źródło: Polipo zwiększy swoje wykorzystanie przestrzeni bez ograniczeń, ponieważ nie jest świadomy wzrostu pamięci podręcznej dysku. Ta postrzegana usterka jest projektowana, ponieważ pominięcie tych kontroli stanu drastycznie zmniejsza zużycie pamięci przez Polipo i ogólne opłaty za system. Praktycznym sposobem ograniczenia użycia dysku jest uruchomienie programu Polipo jako własnego użytkownika i użycie disk quota.

Poniżej opisano instalację i konfigurację Polipo.

Instalacja

Zainstaluj pakiet polipo.

Uruchamianie demona

Aby uruchomić demona polipo:

# systemctl start polipo

Aby uruchomić go automatycznie podczas rozruchu:

# systemctl enable polipo

Wiele instancji

Polipo może również działać bez uprawnień superużytkownika. Aby to zrobić, najpierw skopiuj /etc/polipo/config.sample do odpowiedniego katalogu:

$ cp /etc/polipo/config.sample ~/.poliporc

Edytuj go tak, aby wskazywał na zapisywalną lokalizację, zamiast /var/cache/polipo:

# Uncomment this if you want to put the on-disk cache in a
# non-standard location:
diskCacheRoot = "~/.polipo-cache/"

Utwórz katalog pamięci podręcznej:

$ mkdir ~/.polipo-cache

Na koniec uruchom Polipo w nowej konfiguracji:

$ polipo -c ~/.poliporc

Konfiguracja

Zarządzanie odbywa się głównie w /etc/polipo/config. Większość użytkowników może zdecydować się na użycie przykładowego pliku konfiguracyjnego, który jest wystarczający dla większości sytuacji i dobrze udokumentowany.

# cd /etc/polipo; cp config.sample config

Jednym z elementów konfiguracji, który zasługuje na wymienienie, jest domyślne zachowanie polipa podczas blokowania połączeń wychodzących przez port. Istnieją dwie zmienne w pliku konfiguracyjnym polipo, które kontrolują dozwolone porty wychodzące. allowedPorts określa porty wychodzących połączeń HTTP. Domyślnie jest to 80-100 i 1024-65535. tunnelAllowedPorts} określa, że port polipo zezwala na ruch w tunelu oraz ruch HTTPS. Domyślnie jest znacznie bardziej ograniczony: "Domyślnie dopuszcza ssh, HTTP, https, rsync, IMAP, imaps, POP, pops, Jabber, CVS i Git."

Jeśli pojawi się komunikat o błędzie "403 Forbidden Port" z polipo podczas próby przejścia do hosta: port, musisz skonfigurować polo, aby zaakceptować ruch do większej liczby portów dla HTTP lub HTTPS. Aby ustawić je szeroko otwarte, dodaj poniższe do pliku /etc/polipo/config:

allowedPorts = 1-65535
tunnelAllowedPorts = 1-65535

W przeciwieństwie do innych serwerów proxy, Polipo musi zostać ponownie uruchomiony po zmianach.

Przeglądarka

Ustaw przeglądarkę tak, aby używała localhost:8123 do proxy. Pamiętaj, aby wyłączyć pamięć podręczną dysku przeglądarki, aby uniknąć nadmiarowych operacji we/wy i zła wydajność. Jeśli localhost:8123 nie działa, spróbuj dopasować /etc/hosts , jak hostname.localdomain:8123.

Tunelowanie

Note: Zgodnie z Polipo FAQ na temat "przechwytywania proxy" nie jest to możliwe/obsługiwane!!
Note: wymaga to uruchomienia Polipo jako własnego użytkownika.

Zamiast ręcznie konfigurować każdą przeglądarkę lub inne narzędzia, które mogą skorzystać z buforowania Polipo, można również użyć iptables do kierowania ruchem przez polipo.

Po zainstalowaniu iptables dodaj odpowiednie reguły do /etc/iptables/iptables.rules:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A OUTPUT -p tcp --dport 80 -m owner ! --uid-owner polipo -j ACCEPT
-A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8123
COMMIT

Prowadzi to do ruchu HTTP przez Polipo. Usuń wszystkie ustawienia proxy z przeglądarek, jeśli takie istnieją, i zrestartuj iptables.

Privoxy

Privoxy is a proxy useful for intercepting advertisement and other undesirables.

According to Polipo's developer, in order to get the privacy enhancements of Privoxy and much (but not all) of the performance of Polipo, one should place Polipo upstream of Privoxy.

In other words:

  • point the browser at Privoxy: localhost:8118
  • and direct Privoxy traffic to Polipo: forward / localhost:8123 in the Privoxy configuration file.

Tor

Warning: The Tor Project advises against transparently routing traffic through Tor [1] [2], and strongly recommends using only the Tor Browser [3]. Consider instead using an Isolating Proxy.

Tor is an anonymizing proxy network.

To use Polipo with Tor, uncomment or include the following in /etc/polipo/config:

socksParentProxy = localhost:9050
socksProxyType = socks5

DansGuardian

DansGuardian is a web content filter. The only difference to using DansGuardian with Polipo (rather than squid or tinyproxy) is that in dansguardian.conf the proxyport needs to be set to polipo's 8123:

# the port DansGuardian connects to proxy on
proxyport = 8123

Troubleshooting

DNS Error

If the network is started in background there could be a error like this in the Polipo log:

Couldn't send DNS query: Connection refused
Falling back on gethostbyname.
Getaddrinfo failed: Temporary name server failure
Host ***.com lookup failed: Getaddrinfo failed: Temporary name server failure (131072).

This error occurs because in background mode the network hasn't initialised before Polipo wants to connect to the DNS server (especially using DHCP). Solving this error is possible on three ways:

  • Do not start the net-profiles in background mode (probably not wanted).
  • Set dnsNameServer manually on the wanted DNS server.
  • Or add sleep 10 (or more, it depends) near the beginning of the Polipo daemon script /etc/rc.d/polipo in the start section. This will make Polipo start after the network has initialised.

See this thread for more information on this topic.

See also