1

Я использую ПК под управлением CentOS 6.7 с двумя сетевыми картами (eth0 и eth1) в качестве прокси-сервера Squid. eth0 (красный интерфейс / 192.168.0.2/24) физически связан с маршрутизатором (192.168.0.1/24), а eth1 (зеленый интерфейс / 192.168.1.1/24) подключен к локальной сети.

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

При настройке блока CentOS в качестве прокси-сервера я выполнил следующие настройки:

  1. Обновил ням и установил Squid

  2. отредактировал файл /etc/squid/squid.conf, как показано ниже:

    #
    # Рекомендуемая минимальная конфигурация:
    #
    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

    # Пример правила, разрешающего доступ из ваших локальных сетей.
    # Адаптируйте список ваших (внутренних) IP-сетей, откуда просматриваете
    # должно быть разрешено
    #acl localnet src 10.0.0.0/8 # RFC1918 возможная внутренняя сеть
    #acl localnet src 172.16.0.0/12 # RFC1918 возможная внутренняя сеть

    acl localnet src 192.168.1.0/24 # RFC1918 возможная внутренняя сеть

    #acl localnet src fc00 :: /7 # RFC 4193 диапазон локальной частной сети
    #acl localnet src fe80 :: /10 # RFC 4291 локальные (напрямую подключенные) машины
    ,
    ,
    . (другие строки остались прежними)

  3. Запустил прокси Squid:

    # служба запуска squid # chkconfig squid on

  4. Отредактировал файл /etc/sysctl.conf следующим образом

    net.ipv4.ip_forward = 1

  5. Отредактировал файл /etc /sysconfig /iptables-config

    Изменено "нет" на "да" в следующих строках: И сохранено

    IPTABLES_SAVE_ON_STOP = "да" IPTABLES_SAVE_ON_RESTART = "да"

  6. Изменены правила в iptables следующим образом:

    # iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    # iptables -t filter -D INPUT -j REJECT --reject-with icmp-host-запрещено
    # iptables -t filter -D FORWARD -j REJECT --reject-with icmp-host-запрещено
    # iptables -t filter -A INPUT -p tcp --dport 3128 -j ПРИНЯТЬ
    # iptables -A INPUT -j REJECT --reject-with icmp-host-запрещено
    # 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

    # сервис iptables save
    # chkconfig iptables on
    # сервис iptables restart

  7. Установил dhcp сервер (ням установить dhcp)

  8. Отключил Селинукс:

    # setenforce 0
    # vim /etc /sysconfig /selinux and chandge;
    SELINUX = принуждение к
    SELINUX = отключено

  9. Отредактировал файл /etc /sysconfig /dhcpd и добавил;

    DHCPDARGS = eth1

  10. Отредактировал файл /etc/dhcp/dhcpd.conf следующим образом:

    # Файл конфигурации DHCP-сервера.
    # см. /usr/share/doc/dhcp*/dhcpd.conf.sample
    # см "man 5 dhcpd.conf"
    #
    авторитетный;
    подсеть 192.168.1.0 маска сети 255.255.255.0 {
    диапазон 192,168,1,50 192,168,1,220;
    опция доменных имен-серверов 8.8.8.8, 8.8.4.4;
    # опция доменное имя "centos.local"
    дополнительные маршрутизаторы 192.168.1.1;
    опция широковещательного адреса 192.168.1.255;
    время аренды по умолчанию 600;
    максимальное время аренды 7200;
    }

  11. Запустил dhcp сервер

    # service dhcpd start
    # chkconfig dhcpd on

  12. После добавления фильтрующих сайтов /правил /расширений файлов в,
    а.) /etc/squid/acls.txt
    б.) /etc/squid/adult.txt и
    c.) Файлы /etc/squid/badsites.txt Я изменил файл /etc/squid/squid.conf:

    ,
    . (Выше правил, как chnaged в шаге 2)
    ,
    #
    # ВСТАВЬТЕ СВОЕ СОБСТВЕННОЕ ПРАВИЛО (И) ЗДЕСЬ, ЧТОБЫ РАЗРЕШИТЬ ДОСТУП ОТ ВАШИХ КЛИЕНТОВ
    #
    visible_hostname cetos-server.local
    acl social dstdomain -i "/etc/squid/acls.txt"
    acl badsites dstdomain -i "/etc/squid/badsites.txt"
    acl adult url_regex -i "/etc/squid/adult.txt"
    acl нерабочее время SMTWHFS 18: 00-23: 59
    acl нерабочее время SMTWHFS 00: 00-06: 00

    http_access отрицать нерабочий
    http_access deny social
    http_reply_access запретить злоумышленники
    http_reply_access отрицать взрослого

    # Мы рекомендуем вам использовать по крайней мере следующую строку.
    ierarchy_stoplist cgi-bin?

    # Раскомментируйте и настройте следующее, чтобы добавить каталог кеша диска.
    cache_dir ufs /var /spool /squid 10240 16 256
    ,
    . (Другие правила не были изменены)

  13. Перезапущенный squid, dhcpd и iptables:

    # chkconfig squid on
    # сервис squid перезапустить

    # chkconfig iptables on
    # сервис iptables restart

    # chkconfig dhcpd on
    # service dhcpd restart

Как только это сделано, прокси работает очень хорошо. Ни один ПК в локальной сети не может получить доступ к Интернету без прохождения через прокси-сервер (192.168.1.1 Порт: 3128).

НО,

Эта проблема:
После перезапуска компьютера CentOS, хотя все вышеперечисленные конфигурации все еще присутствуют, а Squid, DHCP и iptables работают правильно (так как они работали до перезапуска машины), теперь ПК в моей локальной сети может получить доступ в Интернет без прокси настройки добавляются на этот компьютер. (Например: ПК с 192.168.1.155/24 может выходить в интернет без добавления IP-адреса и порта прокси-сервера в настройках системного прокси.)

Не могли бы вы помочь мне исправить эту проблему?

Спасибо.

1 ответ1

0

Большое спасибо. Я удалил IP шлюза в eth1. Также я изменил правила iptables.

  1. Сначала я убрал все приемлемые правила.

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

    1. А затем добавлены следующие правила:

      # modprobe ip_conntrack
      # modprobe ip_conntrack_ftp
      # iptables -P INPUT DROP
      # iptables -P ПРИНЯТЬ ВЫХОД
      # iptables -A INPUT -i lo -j ПРИНЯТЬ
      # iptables -A OUTPUT -o lo -j ПРИНЯТЬ
      # iptables -A INPUT -i $ ИНТЕРНЕТ -m состояние - состояние УСТАНОВЛЕНО, СВЯЗАНО -j ПРИНЯТЬ
      # iptables --table nat --append POSTROUTING --out-interface $ INTERNET -j MASQUERADE
      # iptables --append FORWARD --in-interface $ LAN_IN -j ПРИНЯТЬ
      # iptables -A INPUT -i $ LAN_IN -j ПРИНЯТЬ
      # iptables -A OUTPUT -o $ LAN_IN -j ПРИНЯТЬ
      # 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 $ ИНТЕРНЕТ -p tcp --dport 80 -j НАПРАВИТЬ --to-port $ SQUID_PORT
      # iptables -A INPUT -j LOG
      # iptables -A INPUT -j DROP

  2. В дополнение к этому для блокировки YouTube и Facebook я перенаправил входящие запросы для www.youtube.com и www.facebook.com с порта 443 на сервер squid (то есть 192.168.1.1:3128) (как упоминалось ниже). Здесь, поскольку я уже заблокировал вышеупомянутые 2 сайта с помощью прокси-сервера squid, теперь никто в локальной сети не может получить доступ к вышеупомянутым 2 сайтам.

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

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

Теперь прокси-сервер работает нормально.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .