Назад | Перейти на главную страницу

SQUID работает, но не прозрачен на виртуальной машине?

Это виртуальная машина со Slackware

Мост eth0 получает Интернет от главного коммутатора (подключенного к интернет-каналу) в сети 10.0.0.0/24, где шлюз - 10.0.0.254, а IP-адрес, который он получает, - 10.0.0.19

eth1 - это внутренняя сеть, использующая 192.168.1.0/24, а ip eth1 - 192.168.1.254

Вывод маршрута -n:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        0.0.0.0         255.255.255.0   U     202    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         10.0.0.254      0.0.0.0         UG    202    0        0 eth0

Я установил named (bind) и установил переадресацию на 10.0.0.254 и сделал свой сервер имен как 192.168.1.254, который, похоже, работает нормально, никаких проблем здесь нет.

Я установил squid 2.7 и 3.1 с --enable-linux-netfilter и следующие правила в iptables (опубликованы только те правила, которые были связаны, но поскольку он работал для просмотра, я не верю, что проблема может быть здесь):

# deny all traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP

# Use stateful inspection feature to only allow incoming connections
# related to connections I have already established myself
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# allow all traffic on lo interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# allow squid access
$IPT -A INPUT -i eth1 -p tcp --dport 3128 -m conntrack --ctstate NEW -j ACCEPT

# redirect requests to squid 
# both rules worked just fine
#$IPT -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.254:3128
$IPT -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j REDIRECT --to-port 3128

# share internet access
$IPT -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Это тестовая конфигурация, которую я использую для SQUID (правило по умолчанию только для тестирования прозрачного прокси):

http_port 3128 transparent

hierarchy_stoplist cgi-bin ?

refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320

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
acl localnet src 192.168.1.0/24

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow localnet
http_access deny all

always_direct allow all

Со всем вышеперечисленным я могу легко перемещаться, но прозрачного прокси никогда не было, я проверяю, открывая эту страницу http://stuff.dan.cx/php/testproxy.php, если я перейду к нему прямо с сервера без использования прокси, все будет хорошо, если я перейду через прокси, он сразу обнаружит прокси.

Хотя я не думаю, что приведенный ниже вариант - лучший способ, я мог бы скрыть прокси в версии 2.7, используя конфигурацию ниже:

header_access Via deny all
header_access Forwarded-For deny all
header_access X-Forwarded-For deny all

Вопросы:

Я искал в Интернете и на форумах, но не нашел ничего, что могло бы мне помочь.

Я пробовал страницу с кальмарами, но пока не получил ответа.

Я только что нашел, какие правила добавить в 3.1.8, чтобы сделать прокси-сервер необнаружимым, что для меня больше похоже на решение проблемы, чем на настоящий метод прозрачного прокси.

Для этого мне пришлось использовать следующие правила:

request_header_access Via deny all
request_header_access X-Forwarded-For deny all

Я отмечу это как ответ только потому, что ни у кого больше не было идей, чтобы помочь мне, но я все еще с нетерпением жду, как решить этот вопрос, и был бы признателен за вклады, которые могут быть полезны для вопроса в случае, также если другой ответ решает моя проблема, я приму ее как ответ.