Я пытаюсь реализовать Прозрачный прокси-сервер Squid для беспроводной сети, где он в основном предназначен для мобильных устройств. Я использую программное обеспечение squid 3.4.6 (последняя версия, скомпилированная из исходного кода) на сервере Debian 7.6 и в IPTables. Моя сеть состоит из многих сетей VLAN, все из которых контролируются центральным межсетевым экраном CheckPoint, что также позволяет нам контролировать, кто и куда направляется, а серверы напрямую выходят в Интернет. Вот небольшая диаграмма, которую я создал:
Итак, что я сделал до сих пор, так это то, что я выделил одну VLAN только для мобильных устройств, где они перенаправляют запросы DHCP/DNS в наш центр обработки данных, где находятся все серверы. Наконец, используя опцию, которая перенаправляет весь трафик HTTP и HTTPS (сопоставленный http) из этой выделенной беспроводной VLAN на один сервер Squid в центре обработки данных.
Я установил сервер squid с одним сетевым адаптером (который получает весь трафик squid, подключенный напрямую к Интернету с помощью брандмауэра Checkpoint) Debian со всеми обновлениями, и я зарегистрировал процесс установки, чтобы его было проще копировать. Все это сделано на одной машине:
Установите VMWARE Tools
apt-get install -y build-essential linux-headers-amd64
mount /dev/cdrom /mnt/
cp /mnt/VMwareTools-4.0.0-236512.tar.gz /tmp/
umount /mnt/
tar -zxvf /tmp/VMwareTools-4.0.0-236512.tar.gz --directory=/tmp/
mkdir -pv /usr/lib64
/tmp/vmware-tools-distrib/vmware-install.pl --default
rm /tmp/WM* /tmp/vm* -rf
Установить SQUID
apt-get install -y libtool libssl-dev libcrypto++-dev devscripts fakeroot htop ssl-cert squid-langpack && apt-get build-dep -y squid3
sysctl -w net.ipv4.ip_forward=1
nano /etc/sysctl.conf
- net.ipv4.ip_forward=1
- net.ipv4.conf.default.rp_filter = 0
- net.ipv4.conf.default.accept_source_route = 0
wget http://www.squid-cache.org/Versions/v3/3.4/squid-3.4.6.tar.gz
tar -zxvf squid-3.4.6.tar.gz
cd squid-3.4.6
nano configure.sh
chmod +x configure.sh
./configure.sh
make
make install
Содержимое файла configure.sh
#!/bin/sh
'./configure' \
'--build=x86_64-linux-gnu' \
'--srcdir=.' \
'--prefix=/usr' \
'--includedir=/usr/include' \
'--localstatedir=/var' \
'--mandir=/usr/share/man' \
'--infodir=/usr/share/info' \
'--libexecdir=/usr/lib/squid' \
'--datadir=/usr/share/squid' \
'--sysconfdir=/etc/squid' \
'--localstatedir=/var' \
'--bindir=/usr/sbin' \
'--enable-inline' \
'--enable-ssl' \
'--enable-ssl-crtd' \
'--enable-icap-client' \
'--enable-follow-x-forwarded-for' \
'--enable-removal-policies=heap,lru' \
'--enable-delay-pools' \
'--enable-cache-digests' \
'--enable-storeio=ufs,aufs,diskd,rock' \
'--enable-disk-io' \
'--disable-eui' \
'--disable-snmp' \
'--disable-wccp' \
'--disable-wccpv2' \
'--disable-http-violations' \
'--disable-translation' \
'--disable-auto-locale' \
'--disable-htcp' \
'--disable-internal-dns' \
'--with-default-user=proxy' \
'--with-logdir=/var/log/squid/' \
'--with-pidfile=/var/run/squid.pid' \
'--with-filedescriptors=65536' \
'--with-cppunit-basedir=/usr' \
'--with-large-files' \
"$@"
Настройка SQUID
nano /etc/init.d/squid
chmod +x /etc/init.d/squid
chown -R proxy:proxy /var/log/squid/
update-rc.d squid defaults
mkdir -p /etc/squid/ssl
openssl genrsa -des3 -out openssl.key 1024
openssl req -new -key openssl.key -out openssl.csr
cp openssl.key openssl.key.old
openssl rsa -in openssl.key.old -out openssl.key
openssl x509 -req -days 365 -in openssl.csr -signkey openssl.key -out openssl.crt
/usr/lib/squid/ssl_crtd -c -s /etc/squid/ssl/db
nano /etc/squid/squid.conf
Содержимое squid.conf
http_port 3128
http_port 3129 transparent
https_port 3130 intercept ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=8MB cert=/etc/squid/ssl/openssl.crt key=/etc/squid/ssl/openssl.key version=3
visible_hostname proxyc.domain.com
dns_nameservers 8.8.8.8 8.8.4.4
strip_query_terms on
access_log stdio:/var/log/squid/access.log
cache_log /var/log/squid/cache.log
coredump_dir /var/cache/squid
shutdown_lifetime 1 second
ssl_bump server-first all
always_direct allow all
sslcrtd_program /usr/lib/squid/ssl_crtd -s /etc/squid/ssl/db -M 8MB
sslcrtd_children 5
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER,NO_DEFAULT_CA
http_access allow all
http_reply_access allow all
Вот где я считаю, что проблема в том, но я понятия не имею, что делать:
Конфигурация IPTABLES
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3129 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3130 -j ACCEPT
iptables -t nat -I PREROUTING -i eth0 ! -s 192.168.1.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:3129
iptables -t nat -I PREROUTING -i eth0 ! -s 192.168.1.1 -p tcp --dport 443 -j DNAT --to-destination 192.168.1.1:3130
Как мне получить IPTables для перенаправления входящего трафика HTTP/HTTPS как DNAT в порт Squid на 3129 и 3130 ... порт 3128 работает в любом браузере, в котором я могу настроить прокси, но перенаправления с IPTables сводят меня с ума!
То, что я разместил выше в IPTables, не работает. Я получаю сообщение об ошибке 111 «Отказано в соединении», и если я устанавливаю какой-либо веб-браузер на любой URL-адрес, который я там размещаю, я продолжаю получать страницу приветствия Apache «Это работает !!"... если бы кто-нибудь смог мне объяснить, что я делаю неправильно, я был бы признателен.