CentOS 6.7 als Squid-Proxy-Server konfigurieren: Wie kann ich dieses Problem lösen?

1393
Anoma

Ich verwende einen PC mit CentOS 6.7 und 2 NICs (eth0 & eth1) als Squid-Proxy-Server. eth0 (rote Schnittstelle / 192.168.0.2/24) ist physisch mit dem Router (192.168.0.1/24) verbunden, während eth1 (grüne Schnittstelle / 192.168.1.1/24) mit dem LAN verbunden ist.

eth0: Connect automatically Method = Manual  Address = 192.168.0.2  Mask = /24  GW = 192.168.0.1 DNS = 8.8.8.8, 8.8.4.4  eth1: Connect automatically Method = Manual  Address = 192.168.1.1  Mask = /24  GW = 192.168.0.2 DNS = 8.8.8.8, 8.8.4.4 

Bei der Konfiguration der CentOS-Box als Proxyserver habe ich folgende Konfigurationen vorgenommen:

  1. Yum aktualisiert und Squid installiert

  2. bearbeitete /etc/squid/squid.conf -Datei wie unten gezeigt:

    #
    # Empfohlene Mindestkonfiguration:
    #
    acl manager proto cache_object
    acl localhost src 127.0.0.1/32 :: 1
    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 :: 1

    # Beispielregel, die den Zugriff von Ihren lokalen Netzwerken zulässt.
    # Passen Sie an, um Ihre (internen) IP-Netzwerke aufzulisten, von denen aus Browsing
    zulässig ist.
    #Acl localnet src 10.0.0.0/8 # RFC1918 mögliches internes Netzwerk
    #acl localnet src 172.16.0.0/12 # RFC1918 mögliches internes Netzwerk

    acl localnet src 192.168.1.0/24 # RFC1918 mögliches internes Netzwerk

    #acl localnet src fc00 :: / 7 # RFC 4193 lokales privates Netzwerk
    #acl localnet src fe80 :: / 10 # RFC 4291 linklokale (direkt angeschlossene) Maschinen
    .
    .
    (andere Zeilen bleiben jetzt gleich)

  3. Der Squid-Proxy wurde gestartet:

    # Service Squid Start # Chkconfig Squid auf

  4. Die Datei /etc/sysctl.conf wurde wie folgt bearbeitet

    net.ipv4.ip_forward = 1

  5. Die Datei / etc / sysconfig / iptables-config wurde bearbeitet

    In folgenden Zeilen wurde "no" in "yes" geändert: Und gespeichert

    IPTABLES_SAVE_ON_STOP = "Ja" IPTABLES_SAVE_ON_RESTART = "Ja"

  6. Die Regeln in iptables wurden wie folgt geändert:

    # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # iptables -t filter -D EINGABE -j REJECT --reject-with icmp-host-disabled
    # iptables -t filter -D FORWARD -j REJECT --reject- mit icmp-host-verboten
    # iptables -t filter -A INPUT -p TCP -dport 3128 -j ACCEPT
    # iptables -A INPUT -j REJECT --reject-with icmp-host-verboten
    # iptables -A FORWARD -i eth1 -p tcp --dport 443 -d www.facebook.com -j DROP
    # iptables -A FORWARD -i eth1 -p tcp --dport 443 -d www.youtube.com -j DROP

    # Dienst iptables speichern
    # chkconfig iptables beim
    # Dienst iptables restart

  7. Installierte den dhcp-Server (yum install dhcp)

  8. Deaktiviert die Selinux:

    # setenforce 0
    # vim / etc / sysconfig / selinux und chandge;
    SELINUX = Durchsetzen auf
    SELINUX = deaktiviert

  9. Die Datei / etc / sysconfig / dhcpd wurde bearbeitet und hinzugefügt.

    DHCPDARGS = eth1

  10. Die Datei /etc/dhcp/dhcpd.conf wurde wie folgt bearbeitet:

    # DHCP-Server-Konfigurationsdatei.
    # see /usr/share/doc/dhcp*/dhcpd.conf.sample
    # siehe 'man 5 dhcpd.conf'
    #
    autoritativ;
    Subnetz 192.168.1.0 Netzmaske 255.255.255.0 {
    Bereich 192.168.1.50 192.168.1.220;
    Option Domain-Name-Server 8.8.8.8, 8.8.4.4;
    # Option Domain-Name "Centos.local"
    Option Router 192.168.1.1;
    Option Broadcast-Adresse 192.168.1.255;
    Default-Lease-Zeit 600;
    Max-Lease-Zeit 7200;
    }

  11. Der DHCP-Server wurde gestartet

    # Dienst dhcpd start
    # chkconfig dhcpd ein

  12. Nach dem Hinzufügen von Filter-Sites / Regeln / Dateierweiterungen zu
    a.) /Etc/squid/acls.txt
    b.) /Etc/squid/adult.txt und
    c.) /Etc/squid/badsites.txt Dateien Ich habe die / geändert. etc / squid / squid.conf Datei:

    .
    (Die oben genannten Regeln, wie in Schritt 2 beschrieben)
    .
    #
    # Ihre eigene Regel (S) übertragen Sie hier den Zugriff von Ihrem KUNDEN DAMIT
    #
    visible_hostname CETOS-server.local
    acl sozialen dstdomain -i "/etc/squid/acls.txt"
    acl badsites dstdomain -i „/ etc / squid / badsites .txt "
    acl adult url_regex -i" /etc/squid/adult.txt "
    acl Nichtarbeitszeit SMTWHFS 18: 00-23: 59
    ACL Nichtarbeitszeit SMTWHFS 00: 00-06: 00

    http_access verweigern nicht funktionierende
    http_access verweigern soziale
    http_reply_access verweigern Badsites
    http_reply_access verweigern Erwachsenen

    # Wir empfehlen Ihnen, mindestens die folgende Zeile zu verwenden.
    hierarchy_stoplist cgi-bin?

    # Kommentieren Sie das Kommentarzeichen und passen Sie Folgendes an, um ein Laufwerk-Cache-Verzeichnis hinzuzufügen.
    cache_dir ufs / var / spool / squid 10240 16 256
    .
    (Andere Regeln wurden nicht geändert)

  13. Neu gestarteter Tintenfisch, dhcpd und iptables:

    # chkconfig squid auf
    # service squid restart

    # chkconfig iptables auf
    # Dienst iptables neu starten

    # chkconfig dhcpd beim
    # Dienst dhcpd restart

Sobald dies erledigt ist, funktioniert der Proxy sehr gut. Kein PC im LAN kann auf das Internet zugreifen, ohne den Proxyserver (192.168.1.1 Port: 3128) zu verwenden.

ABER,

Das Problem:
Sobald ich die CentOS-Maschine neu gestartet habe, obwohl alle oben genannten Konfigurationen noch vorhanden sind und Squid, DHCP und iptables ordnungsgemäß ausgeführt werden (da sie vor dem Neustart der Maschine ausgeführt wurden), kann jetzt ein PC in meinem LAN darauf zugreifen Internet ohne Proxy-Einstellungen wird diesem PC hinzugefügt. (Beispiel: Ein PC mit 192.168.1.155/24 kann auf das Internet zugreifen, ohne die Proxy-IP-Adresse und den Port in den System-Proxy-Einstellungen hinzuzufügen.)

Könnten Sie mir bitte helfen, dieses Problem zu beheben?

Vielen Dank.

1
Wie Sie Ihrer Iptables-Konfiguration entnehmen können, gibt es nichts, wenn Sie Ihre Pakete direkt zwischen den Schnittstellen weiterleiten, wenn Ihre standardmäßige FORWARD-Richtlinie "ACCEPT" lautet. Entfernen Sie auch die Zeile "** GW = 192.168.0.2 **" aus Ihrer eth1-Konfiguration. Möglicherweise sollten Sie transparenten Proxy-Server verwenden, um die Client-Computer einzurichten. Auf diese Weise leiten Sie automatisch alle HTTP-Anforderungen an den Proxy-Port um. Oleg Bolden vor 8 Jahren 0
Ihre Youtube- und Facebook-Blöcke sind nicht wirksam. Sie können Verbindungen zu einem solchen CDN nicht blockieren. Wahrscheinlich möchten Sie Google nicht vollständig blockieren. Daher müssen Sie sich für die HTTPS-Überwachung entscheiden. Daniel B vor 8 Jahren 0

1 Antwort auf die Frage

0
Anoma

Thank you very much. I removed the Gateway IP in eth1. Also I changed the iptables rules.

  1. First I cleaned the all iptable rules.

    # iptables -F
    # iptables -X
    # iptables -t nat -F
    # iptables -t nat -X
    # iptables -t mangle -F
    # iptables -t mangle -X

    1. And then added the following rules:

      # modprobe ip_conntrack
      # modprobe ip_conntrack_ftp
      # iptables -P INPUT DROP
      # iptables -P OUTPUT ACCEPT
      # iptables -A INPUT -i lo -j ACCEPT
      # iptables -A OUTPUT -o lo -j ACCEPT
      # iptables -A INPUT -i $INTERNET -m state --state ESTABLISHED,RELATED -j ACCEPT
      # iptables --table nat --append POSTROUTING --out-interface $INTERNET -j MASQUERADE
      # iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
      # iptables -A INPUT -i $LAN_IN -j ACCEPT
      # iptables -A OUTPUT -o $LAN_IN -j ACCEPT
      # iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80 -j DNAT --to $SQUID_SERVER:$SQUID_PORT
      # iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport 80 -j REDIRECT --to-port $SQUID_PORT
      # iptables -A INPUT -j LOG
      # iptables -A INPUT -j DROP

  2. In addition to this to block YouTube and Facebook I diverted the incoming requests for www.youtube.com and www.facebook.com from port 443 to squid server (that is 192.168.1.1:3128) (As mentioned bellow). Here, as I have already blocked the above 2 sites with in the squid proxy now no one within the LAN can access the above 2 sites.

    # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -d www.facebook.com -j DNAT --to 192.168.1.1:3128

    # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -d www.youtube.com -j DNAT --to 192.168.1.1:3128

Now the proxy server works fine.