Skocz do zawartości

Iptables Do Transparent Proxy Pomocy


samba

Rekomendowane odpowiedzi

Witam

 

Proszę o pomoc. Gdzieś mam błąd i nie mogę bo namierzyć ! Chcę zrobić przekierowanie portu 80 z lanu na 8080 do squida aby nie zmieniać konfiguracji przeglądarek tj transparent proxy.

 

eth0 -kabel do routera 192.168.1.2 /24 statyczny IP

eth1 kabel do LANU 192.168.0.1/24 statyczny IP

 

Pingi z windows dochodzą do 192.168.0.1 czyli do eth1 ale ping wp.pl juz nie idzie !

 

skrypt firewalla ladowany z pliku fw.sh dodany do /etc/rc.d/rc.local (autostart)

 

#!/bin/sh                                                                                                                    
modprobe ip_conntrack                                                                                                        
modprobe ip_nat                                                                                                              
iptables -F                                                                                                                  
iptables -t nat -F                                                                                                           
                                                                                                                             
iptables -P INPUT DROP                                                                                                       
#iptables -P OUTPUT ACCEPT                                                                                                   
                                                                                                                             
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT                                                             
iptables -A INPUT -i lo -j ACCEPT                                                                                            
iptables -A INPUT -p icmp -m limit --limit 10/sec -j ACCEPT                                                                  
                                                                                                                             
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 8080                                                                      
iptables -P FORWARD DROP                                                                                                     
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT                                                           
# wpuszczam pingi                                                                                                            
iptables -A FORWARD -p icmp -j ACCEPT                                                                                        
# services                                                                                                                   
iptables -A FORWARD -p tcp --dport 21 -j ACCEPT                                                                              
#iptables -A FORWARD -p tcp --dport 22 -j ACCEPT                                                                             
iptables -A FORWARD -p tcp --dport 9999 -j ACCEPT                                                                            
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT                                                                              
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT                                                                             
iptables -A FORWARD -p tcp --dport 443 -j ACCEPT                                                                             
iptables -A FORWARD -p tcp --dport 993 -j ACCEPT                                                                             
iptables -A FORWARD -p tcp --dport 995 -j ACCEPT                                                                             
# DNSY                                                                                                                       
iptables -A FORWARD -p tcp --dport 53 -j ACCEPT                                                                              
iptables -A FORWARD -p udp --dport 53 -j ACCEPT                                                                              
# DHCP                                                                                                                       
iptables -A FORWARD -p udp --dport 67 -j ACCEPT                                                                              
iptables -A FORWARD -p udp --dport 68 -j ACCEPT                                                                              
                                                                                                                             
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to-source 192.168.1.2                                     
iptables -t nat -A PREROUTING -i eth1 -s 192.168.0.0/24 -d ! 192.168.0.1 -p tcp --dport 80 -j REDIRECT --to-port 8080        
# ipables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

P.S

Jak zrobić tj zapisać aby zamiast standardowego pliku /etc/systemconfig/iptables były na trwałe zapisane powyższe reguły ?

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

Rozumiem, ze z routera pingujesz wp.pl?

Jak u Ciebie wyglada tablica routingu?

 

Mysle, ze jeżeli chodzi o sam forwarding i squidzie ustawiony na transparency to wystarczy:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

 

Z routera sprzętowego wszystko wychodzi. Bezpośrednio z linuksa tj z eth0 pingi wychodzą na np. wp.pl

Z klienta tj 192.168.0.3 pingi nie idą na wp.pl

 

Już wariuje jeśli chodzi o ten redirect. Piszę po kolei.

 

Router sprzętowy192.168.1.1

eth0 =192.168.1.2 (do internetu)

eth1=192.168.0.1 (do LANU) w tej sieci ma być przekierowanie dla klientów z portu 80 na 8080 aby używali transparent proxy

 

Nadaje na sztywno IP dla eth0 =192.168.1.2 i to jest pierwsza sieć

 

Miałem dylemat gdzie postawić DHCP tj docelowo chciałem aby adresy IP nadawał sprzętowy router dla sieci 192.168.1.1 oraz 192.168.0.1 (eth1) (mam wtedy większą kontrolę bo na routerze UTM mogę zobaczyć cały ruch kto co ściągał ile itp.):- ale to inne podsieci da się coś takiego z zrobić ? Poza tym mogę lepiej sterować pewnymi politykami na samym routerze/UTM.

 

Więc DHCP postawiłem dla eth1 (LANU)

option domain-name-servers 192.168.1.1;                                                                                                                       
option subnet-mask 255.255.255.0;                                                                                                                            
ddns-update-style ad-hoc;                                                                                                                                    
authoritative;                                                                                                                                               
dhcpd_interfaces="eth1";                                                                                                                                     
allow unknown-clients;                                                                                                                                       
subnet 192.168.0.0 netmask 255.255.255.0 {                                                                                                                    
        range 192.168.0.2.192.168.0.15;                                                                                                                     
        }

 

w resolv.conf mam

nameserwer 192.168.1.1
search localdomain

 

plik hosts mam bez zmian tj default

 

Co chcę osiągnąć:

- standardowo aby klienci bez konfiguracji przeglądarek tj wpisania IP proxy łączyli się na porcie 80 który będzie REDIRECT na 8080

squid.conf

httpd_port 192.168.0.1:8080 transparent

 

- dodać regułę do iptables aby niektóre IP nie korzystały z proxy tj bez REDIRECT tylko bezpośrednio na 80 ( na wypadek jakby coś nie działało)

 

Jak sprawdzić czy ładowany skrypt iptables dodany do rc.local ładuje się porawnie tj jeśli popełniłem gdzieś błąd w skrypcie to chciałbym aby iptables pokazało mi w której linijce . Teraz działam jakby po omacku .

Przy defaultowym RedHatowym firewallu jak zrobi się iptables restart pokazuje błąd tu nic nie pokazuje. I jak z takiego skryptu zrobić plik /sysconfig/iptables aby zmiany w konfiguracji iptables były możliwe po restarcie iptables ??

 

P.S

Czy jeśli mam włączone w sysctl ip_forward to w skrypcie iptables trzeba ładować ip_conntrack ip_conntrack_ftp?

Plik iptables-config widać ma na stałe włączone ładowanie wszystkich modułów ip_contrack ?! Czy coś źle rozumuję ?

# Load additional iptables modules (nat helpers)                                                                                                             
#   Default: -none-                                                                                                                                          
# Space separated list of nat helpers (e.g. 'ip_nat_ftp ip_nat_irc'), which                                                                                  
# are loaded after the firewall rules are applied. Options for the helpers are                                                                               
# stored in /etc/modprobe.conf.                                                                                                                              
IPTABLES_MODULES="ip_conntrack_netbios_ns ip_conntrack_ftp"

Odnośnik do komentarza
Udostępnij na innych stronach

Host nie pinguje np: wp.pl, ale czy klient pinguje Ci router sprzetowy (192.168.1.1).

Z tego co widze, to w konfigu DHCP nie ma bramy dla klientow w LAN, czyli eth1:

option routers 192.168.0.1;

Faktycznie nie wpiałem tej linijki tzn źle przekleiłem .

mój dhcpd.conf

ddns-update-style interim;                                                                                                   
ignore client-updates;                                                                                                       
# ? option netbios-name-servers 192.168.1.1;    chyba nie jest potrzebne tylko do wins ?                                                                             
option domain-name-servers 192.168.1.1;                                                                                      
option routers 192.168.0.1;                                                                                                  
option subnet-mask 255.255.255.0;                                                                                            
option ntp-servers 192.168.1.1;                                                                                                                                                                                                 
authoritative;                                                                                                               
dhcpd_interfaces="eth1";                                                                                                     
allow unknown-clients;                                                                                                       
subnet 192.168.0.0 netmask 255.255.255.0 {                                                                                   
        range 192.168.0.1 192.168.0.8;                                                                                       
        }

Mimo to pingi na eth1 idą ale dalej tj na router ablo na eth0 nie idą

 

Zrobiłem firewalla od poczatku

 

#!/bin/sh                                                                                                                    
modprobe nf_conntrack_ftp                                                                                                    
iptables -F                                                                                                                  
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT                                                             
iptables -A INPUT -i lo -j ACCEPT                                                                                                                                                                         
iptables -A INPUT -p ICMP -m limit --limit 5/m -j ACCEPT                                                                     
                                                                                                                             
iptables -P INPUT DROP                                                                                                       
                                                                                                                             
iptables -t nat -F                                                                                                                                               
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE                                                                                     
                                                                                                                            
#iptables -t nat -A PREROUTING -i eth1 -s ! 192.168.0.1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:8080                      
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:8080                                        
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -d 192.168.0.1 -j SNAT --to 192.168.0.1                             
                                                                                                                             
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT                                                           
iptables -A FORWARD -p TCP --dport domain -j ACCEPT                                                                          
iptables -A FORWARD -p UDP --dport domain -j ACCEPT                                                                          
iptables -A FORWARD -p ICMP -m limit --limit 5/s -j ACCEPT                                                                   
iptables -A FORWARD -p TCP --dport 80 -s 192.168.1.100 -j ACCEPT                                                             
iptables -A FORWARD -i eth1 -o eth1 -j ACCEPT                                                                                
iptables -P FORWARD DROP

 

Przy tym configu pingi na eth1 eth2 i poza router np wp.pl idą ale wpisujac na kliencie np. http://wp.pl nie idzie nic tj nie ma przekierowania na proxy.

 

Podpowiedzcie mi bo już zwariuję jaka jest kolejność intterfejsów w nat (gdzie LAN =eth1 gdzie wyjście na internet =eth0)

przy :

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:8080

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -d 192.168.0.1 -j SNAT --to 192.168.0.1

 

Squid jest na eth1=192.168.0.1:8080

 

Odnośnik do komentarza
Udostępnij na innych stronach

Arabski ten link jest z 2002r. Jeśli chodzi o squid jest już mocno przestarzały gdyż

* httpd_accel_host virtual

* httpd_accel_port 80

* httpd_accel_with_proxy on

* httpd_accel_uses_host_header on

 

nie stosuje się w wersjach squid od 2.6 >. To przestarzałe configi. Teraz robi się to http_port IP-squida:port transparent i działa :)

 

Co do iptables to też korzystałem z tego linka i nawet miałem wpisywałem te same reguły ale nie działało mi.

 

Więc dalej problem jest nie rozwiązany a śpieszy mi się bardzo !!

 

Powiedzcie gdzie mam błąd w powyższych configach ? Problem tkwi w firewallu. HELP!

 

P.S

Jak wyglądała by reguła dla konkretnego IP która omijała by squida tj port 8080 dla IP np. 192.168.0.6 ?

Odnośnik do komentarza
Udostępnij na innych stronach

  • 1 month later...
  • 2 weeks later...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...