Это виртуальная машина со 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
Я отмечу это как ответ только потому, что ни у кого больше не было идей, чтобы помочь мне, но я все еще с нетерпением жду, как решить этот вопрос, и был бы признателен за вклады, которые могут быть полезны для вопроса в случае, также если другой ответ решает моя проблема, я приму ее как ответ.