Strona 1 z 2

Transparent squid - IPTABLES /Problem

: 11 listopada 2014, 17:56
autor: chodki
Hej.
Jestem bardzo poczytujący w linuxie, ale postawiłem sobie zadanie w postaci instalacji squida.
Jestem już na samym końcu, mam już squida skonfigurowanego pozostał mi ostatni krok czyli przekierowanie ruchu sieciowego na port 3128.
squid pracuje na maszynie dedykowanej do tego jest między routerem a switchem dzielącym internet na użytkowników końcowych.

Działa mi już tryb brigde, ale powie mi ktoś jak przekierować ruch na squida? Wiem że załatwią tą sprawę poniższe polecenia:

ebtables -t broute -A BROUTING -p IPv4 --ip-protocol 6 --ip-destination-port 80 -j redirect --redirect-target ACCEPT

iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Ale co dalej gdzie ja to mam umieścić, jak to uruchomić?!
Wiem że moje pytanie jest może błache, ale sorry nie wiem co dalej... ;/

(ebtables został zainstalowany)

Pozdrawiam Ł.


: 11 listopada 2014, 18:42
autor: Yampress
Ale nie pisz na czerwono.

: 11 listopada 2014, 20:44
autor: dedito
Polecenia wpisz na routerze w konsoli/terminalu/wierszu poleceń.
Najlepiej, żeby się to wykonywało również przy restartach, czyli dopisać do skryptów startowych lub do firewalla.

: 11 listopada 2014, 21:25
autor: chodki
Ok dzięki za pomoc, ale pytan ciąg dalszy. ;-) Skrypty startowe to np. rc.local? Czyli co mam umieścić te dwie linijki przed exit 0??
A w jaki sposób dodać je do firewalla?

: 11 listopada 2014, 21:50
autor: dedito
Metod jest co najmniej kilka. Firewall też jakoś ładuje regułki, nie wiem jak to robi w twoim przypadku.
Przykład: zapisz te dwie linijki w jakimś skrypcie bash, nadaj mu atrybut wykonywalności i w /etc/rc.local dodaj linijkę uruchamiającą ten skrypt (przed exit 0)

: 12 listopada 2014, 08:29
autor: pawkrol
Lepiej dodać skrypt o którym wspomniał dedito do /etc/network/if-pre-up.d, gdyż ustawiasz firewalla przed podniesieniem interfejsu.

: 12 listopada 2014, 09:11
autor: chodki
Dzięki chłopaki sqiud już działa, mam pierwsze logi ale nie podoba mi się jedna rzecz, w logach nie mam określonego dokładnego adresu IP komputera który pobiera dane z netu.
Oto fragment loga:
1415778654.427 0 10.10.10.0 TCP_MISS/504 1454 GET http://cdn.stumble-upon.com/i/badges/ba ... 50x60.png? - NONE/- text/htm[/
1415778654.439 0 10.10.10.0 TCP_MISS/504 1418 GET http://www.binarytides.com/favicon.ico - NONE/- text/html
1415778654.541 0 10.10.10.0 TCP_MISS/504 1418 GET http://www.binarytides.com/favicon.ico - NONE/- text/html
1415778654.867 824 10.10.10.0 TCP_MISS/302 589 GET http://ads.yahoo.com/cms/v1? - DIRECT/217.163.21.35 text/plain
1415778654.870 0 10.10.10.0 TCP_MISS/504 1398 GET http://ib.adnxs.com/ymapuid? - NONE/- text/html
1415778654.875 0 10.10.10.0 TCP_MISS/504 1404 GET http://ib.adnxs.com/a_usersync? - NONE/- text/html
1415778660.581 18655 10.10.10.0 TCP_MISS/200 94605 GET http://a.disquscdn.com/next/common.8ecc ... 5e5b85d.js - DIRECT/185.31.17.196 application/javascript
1415778660.694 0 10.10.10.0 TCP_MISS/504 1482 GET http://a.disquscdn.com/next/lounge.8004 ... 7784c8f.js - NONE/- text/html
Wskazuje mi na adres 10.10.10.0 mimo iż komputer który korzysta ze squda ma ip 10.10.10.166
Jak rozwiązać ten problem?!

Ustawienia squid.conf
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
#nasza sieć
acl our_networks src 10.10.10.0/24
#zezwalamy na dostęp do sieci odpowiednim obszarom
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow our_networks
http_access deny all
Ustawienia sieci
# The loopback network interface
auto lo
iface lo inet loopback
# Set up interfaces
iface eth0 inet manual
iface eth1 inet manual
# Bridge setup
auto br0
iface br0 inet static
bridge_ports eth0 eth1
address 10.10.10.28
broadcast 10.10.10.255
netmask 255.255.255.0
gateway 10.10.10.53
I jeszcze jedna sprawa, logi błędów (cache log),znowu fragment
2014/11/12 07:22:56| errorTryLoadText: '/var/log/squid/errors/Polish/ERR_READ_TIMEOUT': (2) No such file or directory
2014/11/12 07:22:56| errorTryLoadText: '/var/log/squid/errors/Polish/ERR_LIFETIME_EXP': (2) No such file or directory
2014/11/12 07:22:56| errorTryLoadText: '/var/log/squid/errors/Polish/ERR_READ_ERROR': (2) No such file or directory
2014/11/12 07:22:56| errorTryLoadText: '/var/log/squid/errors/Polish/ERR_WRITE_ERROR': (2) No such file or directory
2014/11/12 07:22:56| errorTryLoadText: '/var/log/squid/errors/Polish/ERR_SHUTTING_DOWN': (2) No such file or directory
Oczywiście chmody dla katalogu squid ustawione prawidłowo, sprawdzałem kilka razy, fizycznie istnieje struktura katalogów /var/log/squid/errors/Polish/ ;/

Dzięki wielkie :)

: 12 listopada 2014, 11:12
autor: pawkrol
Co do braku plików w /var/log/squid/errors/Polish/ zobacz w w środku katalogi masz owe pliki.

Kod: Zaznacz cały

[font=courier new]ERR_READ_TIMEOUT
[/font][font=courier new]ERR_LIFETIME_EXP
[/font][font=courier new]ERR_READ_ERROR
[/font][font=courier new]ERR_WRITE_ERROR[/font]
[font=courier new]ERR_SHUTTING_DOWN[/font]
Jak nie masz to zerknij czy w innym katalogu ich nie ma np. w /var/log/squid/errors/English/ i ewentualnie je skopiuj

Tak się spytam po co robisz bridge na interfejsach ?

: 12 listopada 2014, 13:46
autor: chodki
W katalogu polish nie mam nic jest pusty.. ;/
Niestety także nie mam katalogu English z którego mógłbym to sobie przekopiować.. ;/
Masz może pomysł skąd je zaciągnąć albo jak wygenerować?

Jeżeli chodzi o bridge to mój plan jest taki że proxy umieszczę fizycznie między firewallem a routerem, dlatego stosuje funkcji bridge aby przelatywały przez niego pakiety.
No chyba że jest jakiś inny szybszy/ lepszy sposób?!
Jak wspominałem wcześniej jestem początkujący w linuxie a zwłaszcza w temacie squida więc każda wskazówka będzie bardzo cenna i z góry za nią dziekuje :)

: 12 listopada 2014, 19:08
autor: dedito
Strony błędów instalują się razem z pakietem squid-langpack ( https://packages.debian.org/wheezy/squid-langpack )
Powinieneś to mieć już w katalogu /usr/share/squid-langpack/
To skąd squid będzie ładować strony z błędami decydujesz w pliku squid.conf (jeśli pamięć mnie nie myli).
Z logów wynika, że masz to skonfigurowane na ścieżkę /var/log/squid/errors/Polish/ gdzie zapewne nie ma nic stąd błędy w logach.