Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Instalacja i konfiguracja oprogramowania sieciowego.
jokeusa
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 26 wrz 2008, 14:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME

Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: jokeusa »

Witam.
Mam pewien problem ktorego nie potrafie rozwiazac od dluzszego czasu.
Otoz stoi sobie pojedyncza maszyna, na tejze maszynie postawione jest Ubuntu i zainstalowany Squid3.

Maszyna nie jest zadnym routerem, stoi sama, a squid dziala jako filtr konkretnych stron i sciagania konkretnych plikow (np. '.exe').

Squid dziala, tyle udalo mi sie ustawic (sprawdzilem ustawiajac Firefox'a zeby laczyl sie bezposrednio do Squid'a {Server proxy HTTP:localhost Port 3128}, i zmieniajac http_access localhost allow/deny w /etc/Squid3/squid.conf, wlaczalem lub wylaczalem dostep do neta)

Niestety tutaj zaczynaja sie schody, poniewaz Squid ma dzialac jako transparentne proxy (ustawione http_port 3128 transparent).
W kilku miejscach, poradikach, FAQ's znalazlem instrukcje ustawienia przekierowania na port na ktorym naslucukiereczeke Squid:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Niestety powyzsza linijka nie robi kompletnie nic.
Firefox, nieprzekierowany recznie w ustawieniach na Squida nadal chodzi jak chce.

Probowalem kilku roznych zeczy, ale nic nie dawalo efektu (nawet ludzie na #ubuntu@irc.freenode.net byli dziwnie milczacy albo nie potrafili pomoc :( )

Wiec zwracam sie z prosb do tutejszych uzytkownikow...jak przekierowac ten port na Squida?
I btw: nie uzywajac zadnych narzedzi, chodzi mi konkretnie o to jaki wpis w jakim konfigu zmienic (posrednik sieciowy / firestarter / etc nie wchodza w gre).

Z gory dziekuje!

Edit:
Probowalem tez ruszyc za pomoca:

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.2.12:3128
(192.168.2.12 = adres tego PC)

Edit2: studiujac troche en.wikipedia.org/wiki/iptables natrafilem na takie cos:
This simple example of its use illustrates how to redirect all traffic on the default HTTP port, port 80, to port 8080, allowing the HTTP daemon to run as a non-privileged user, unable to listen on port numbers below 1024.

Kod: Zaznacz cały

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Note: if you launch this command on your computer it will only work for external IP addresses connecting to your machine. Connections from localhost do not traverse the PREROUTING chain in the "nat" table. If you also want this feature to work, use the following rule:

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080
Z tego co rozumiem to to co dotychczas uzywalem dzialalo tylko na polaczenia przychodzace z zewnetrznych adresow IP tak?

Niestety druga linijka kodu tez nic nie pomaga ( zmienione 8080 na 3128 )
Recznie przekierowane na squida laczy sie lub nie, zgodnie z moim wpisem w squid.conf, ale kiedy wylacze reczne przekierowanie, i ustawie bez serwera proxy, net chodzi bez problemu ignorujac fakt ze powinien byc przekierowany na squida ktory w tym momencie mial ustawione http_access deny localhost (czyli net nie powinien dzialac)
Awatar użytkownika
frklin
Zakręcona Traszka
Zakręcona Traszka
Posty: 891
Rejestracja: 13 gru 2007, 04:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Openbox
Architektura: x86
Lokalizacja: WLKP
Kontakt:

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: frklin »

DO WYGRANIA TRZY ROUTERY WWW.NIBYBLOG.PL/KONKURS
jokeusa
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 26 wrz 2008, 14:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: jokeusa »

Niestety ten opis dotyczy Squid'a dzialajacego jako serwer.
Mnie chodzi konkretnie o przekierowanie na transparentnego Squida filtrujacego ruch wychodzacy z tej samej maszyny na ktorej jest on zainstalowany (z tego co Wikipedia pisze to sa 2 rozne sprawy i 2 rozne konfiguracje).

EDIT:
Popytalem na #ubuntu/#iptables@irc.freenode.net, tam dowiedzialem se ze zeczywiscie wikipedia miala racje, ta komenda sluzy do przekierowania z zew. ip.
Wiec wyglada na to ze

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 3128
powinno dzialac...tylko teraz czy '-o lo' powinno zostac tak jak jest, czy raczej moze '-o eth0'?

EDIT:
Ok, wyglada na to ze mialem racje, nalezy przekierowac ruch (OUTPUT -o) z localhosta,
wychodzacy na urzadzeniu eth0, skierowany na port 80, zeby polecial sobie na port 3128:
(przynajmniej tak ja to rozumiem)

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 3128
Udalo sie, dziala, przekierowuje mnie na squida bez potrzeby recznego ustawiania proxy w przegladarce :)
Pomijajac fakt ze squid, po wlaczeniu przekierowania nie identyfikuje tego PC juz jako localhost, ale z tym sie rozprawilem dodajac jeszcze jedna regulke acl i http_access allow.

EDIT:
I kolejne informacje dotyczace powyzszego:
niestety to co wydawalo sie rozwiazaniem, ustawialo wszystkie zapytania w endless loop.

Popytalem wiec znowu na #ubuntu@irc.freenode.net i otrzymalem taki linky do postu o identycznym problemie.

Rozwiazanie:

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -p tcp -m owner --dport 80 --uid-owner squid -j ACCEPT
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
Te dwie linijki rozwiazaly moj problem, squid dziala jako transparentne proxy, przekierowania dzialaja, i zmieniajac dostep do mojego boxa (np: acl my_pc src 192.168.2.12) http_access allow/deny my_pc , dopuszczalem lub blokowalem dostep do neta.

#squid - nazwa usera pod ktorym dziala squid:
#sprawdzic mozna przez: ps auxw | grep squid

((c)http://www.mail-archive.com/squid-users ... 14384.html && #ubuntu@irc.freenode.net)
stachuc
Piegowaty Guziec
Piegowaty Guziec
Posty: 19
Rejestracja: 25 paź 2008, 15:03
Płeć: Mężczyzna
Wersja Ubuntu: 8.04
Środowisko graficzne: GNOME

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: stachuc »

Czy po restarcie systemu iptables pamieta Twoje wpisy?
af2001
Piegowaty Guziec
Piegowaty Guziec
Posty: 2
Rejestracja: 06 gru 2006, 07:49
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: af2001 »

Zrobiłem zgodnie z tym co zaproponował jokeusa i działa ale tylko do restartu kompa.
Po restarcie nie pamięta tych ustawień. Jak zrobić by przekierowanie portów zostało zapamiętane i działało po restarcie????? UBUNTU 8.10.
jokeusa
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 26 wrz 2008, 14:19
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: jokeusa »

Ojc, kurcze, nie pamietam zbyt dokladnie, ale chyba wrzucilem to w jakis skrypt i ustawilem zeby sie uruchamial za kazdym razem przy starcie, ale pewien nie jestem.
Niestety nie jestem w stanie teraz juz sprawdzic, komputer poszedl na filie :/

Edit: ok, znalazlem stara dokumentacje i wyszlo ze:
1: nadac .ex dla naszego skryptu (chmod +x /etc/init.d/somefile)
2: zainstalowac skrypt uzywajac update-rc.d (update-rc.d somefile defaults 20)
Somefile z tego co pamietam to byla nazwa pliku z naszym skryptem.
mes mariusz
Wytworny Kaczor
Wytworny Kaczor
Posty: 294
Rejestracja: 11 mar 2009, 16:49
Płeć: Mężczyzna
Wersja Ubuntu: 18.04
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: Ubuntu + Squid3 + iptables(przekierowanie portów) = nie dziala :(

Post autor: mes mariusz »

jokeusa pisze:Rozwiazanie:

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -p tcp -m owner --dport 80 --uid-owner squid -j ACCEPT
iptables -t nat -A OUTPUT -p tcp -m tcp --dport 80 -j DNAT --to-destination 127.0.0.1:3128
Te dwie linijki rozwiazaly moj problem, squid dziala jako transparentne proxy, przekierowania dzialaja, i zmieniajac dostep do mojego boxa (np: acl my_pc src 192.168.2.12) http_access allow/deny my_pc , dopuszczalem lub blokowalem dostep do neta.

#squid - nazwa usera pod ktorym dziala squid:
#sprawdzic mozna przez: ps auxw | grep squid
Witam.

A ja nie jestem pewien, jak to zrobić.

Gdy próbuję wykonać

Kod: Zaznacz cały

iptables -t nat -A OUTPUT -p tcp -m owner --dport 80 --uid-owner squid -j ACCEPT
konsola zwraca:

Kod: Zaznacz cały

iptables v1.4.4: owner: Bad value for "--uid-owner" option: "squid"
Pomyślałem, że może zamiast "--uid-owner" należy wpisać numer zwracany przez #squid

U mnie:

Kod: Zaznacz cały

root@dell:/home/administrator# squid
2010/01/14 20:54:49| Squid is already running!  Process ID 2116
Próbuję więc wykonać:

Kod: Zaznacz cały

root@dell:/home/administrator# iptables -t nat -A OUTPUT -p tcp -m owner --dport 80 2116 squid -j ACCEPT
Bad argument `2116'
Jak widać również bez rezultatu.

Generalnie na problem przekierowania portu 80 na 8080 w Ubuntu natknąłem się przy okazji: viewtopic.php?p=690114

Prośba o podpowiedź co robię nie tak.
ODPOWIEDZ

Wróć do „Sieci, serwery, Internet”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 24 gości