Тайм-аут прокси-сервера Squid на общедоступном интерфейсе - пакеты теряются на порту 3128

Частичное решение

Оказывается, трафик на порт 3128 терялся на пути к моему VPS. Я не уверен, что это Linode блокирует этот порт, или это что-то между ними. (Я использовал этот же прокси-сервер в других облаках, и он работал.)

Изменил порт на 53128, и он заработал.

Однако как я могу проверить порт 3128, чтобы проверить, где находятся пакеты упал? Конечно, до того, как они достигнут моего VPS.


Проблема

У меня есть прокси-сервер squid на VPS под управлением CentOS 6.7, чтобы я мог совместно использовать веб-сеансы между несколькими узлами кластера.

Этот прокси-сервер работает в облаке, и когда все узлы находятся внутри та же частная сеть 192.168.0.0/24 все работает нормально.

На этой неделе я развернул несколько серверов у себя дома, чтобы выполнять очень длительные пакетные задания, и мне нужно подключиться через прокси . Однако время ожидания squid на моем общедоступном интерфейсе истекает.

Мой squid.conf в значительной степени разрешает каждое входящее соединение, поскольку я ограничиваю его через iptables . Однако даже при остановленном брандмауэре я не могу подключиться к своему прокси-серверу через Интернет.

Тестовое соединение из кластера VPS

Примечание: общедоступный IP-адрес и имя хоста намеренно опущены.

$ curl --proxy PUBLIC_HOSTNAME:3128 -v google.com.br
* About to connect() to proxy PUBLIC_HOSTNAME port 3128 (#0)
*   Trying PUBLIC_IP... connected
* Connected to PUBLIC_HOSTNAME (PUBLIC_IP) port 3128 (#0)
[ OUTPUT OMITTED ]
* Connection #0 to host PUBLIC_HOSTNAME left intact
* Closing connection #0

$ curl --proxy PRIVATE_HOSTNAME:3128 -v google.com.br
* About to connect() to proxy PRIVATE_HOSTNAME port 3128 (#0)
*   Trying PRIVATE_IP... connected
* Connected to PRIVATE_HOSTNAME (PRIVATE_IP) port 3128 (#0)
[ OUTPUT OMITTED ]
* Connection #0 to host PRIVATE_HOSTNAME left intact
* Closing connection #0

Проверить соединение из дома (Интернет)

Примечание: общедоступный IP-адрес и имя хоста намеренно опущены.

Время ожидания пакетов на порту 3128 истекло. Пакеты на порте 53128 действительно работают.

$ curl --proxy HOSTNAME:3128 -v google.com.br
* About to connect() to proxy HOSTNAME port 3128 (#0)
*   Trying PUBLIC_IP... Connection timed out
* couldn't connect to host
* Closing connection #0
curl: (7) couldn't connect to host

$ curl --proxy PUBLIC_HOSTNAME:53128 -v google.com.br
* About to connect() to proxy PUBLIC_HOSTNAME port 53128 (#0)
*   Trying PUBLIC_IP... connected
* Connected to PUBLIC_HOSTNAME (PUBLIC_IP) port 53128 (#0)
[ OUTPUT OMITTED ]
* Connection #0 to host PUBLIC_HOSTNAME left intact
* Closing connection #0

Кстати, как вы можете видеть из вышеприведенных выходных данных, даже изнутри облака соединение МОЖЕТ быть выполнено через общедоступный интерфейс.

Мой VPS размещен на Linode, их - частные сети сделаны через виртуальный интерфейс, весь трафик маршрутизируется через публичный интерфейс. В любом случае, я не думаю, что это проблема.

squid.conf

Squid прослушивает порт по умолчанию.

$ sudo netstat -ntlp | grep  3128
tcp        0      0 :::53128                    :::*                        LISTEN      19282/(squid)       
tcp        0      0 :::3128                     :::*                        LISTEN      19282/(squid) 

Мой файл конфигурации довольно стандартный, с добавлением маскировки в конце.

Squid был установлен через yum , это пакет, доступный для CentOS 6.7.

$ sudo cat /etc/squid/squid.conf
#
# Recommended minimum configuration:
#
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

# Example rule allowing access from your local networks.
# Adapt to list your (internal) IP networks from where browsing
# should be allowed
#acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
#acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
#acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
#acl localnet src fc00::/7       # RFC 4193 local private network range
#acl localnet src fe80::/10      # RFC 4291 link-local (directly plugged) machines

visible_hostname cluster.proxy
dns_nameservers 8.8.8.8 8.8.4.4
#hosts_file none
hosts_file /etc/hosts

# quick_abort_min 0 KB
# quick_abort_max 0 KB
strip_query_terms off 
log_icp_queries off
client_db off
buffered_logs on
# half_closed_clients off

connect_timeout 30 seconds
forward_timeout 60 seconds
request_timeout 60 seconds

dns_timeout     30 seconds
# positive_dns_ttl 8 hours
# negative_dns_ttl 30 seconds

acl localnet src all           # Intentionally left open. Not sure if this is valid.
acl ghome src OMITTED.ddns.net # Dynamic DNS for my home address

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

#
# Recommended minimum Access Permission configuration:
#
# Only allow cachemgr access from localhost
http_access allow manager localhost
http_access deny manager

# Deny requests to certain unsafe ports
#http_access deny !Safe_ports

# Deny CONNECT to other than secure SSL ports
#http_access deny CONNECT !SSL_ports

# We strongly recommend the following be uncommented to protect innocent
# web applications running on the proxy server who think the only
# one who can access services on "localhost" is a local user
#http_access deny to_localhost

#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#

# Example rule allowing access from your local networks.
# Adapt localnet in the ACL section to list your (internal) IP networks
# from where browsing should be allowed
http_access allow localnet
http_access allow localhost
http_access allow ghome         # Tried this rule for my home

# And finally deny all other access to this proxy
#http_access deny all
http_access allow all           # Tried this rule for world

# Squid normally listens to port 3128
http_port 3128
http_port 53128

# We recommend you to use at least the following line.
hierarchy_stoplist cgi-bin ?

cache deny all
# Uncomment and adjust the following to add a disk cache directory.
#cache_dir ufs /var/spool/squid 100 16 256

# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid

# Add any of your own refresh_pattern entries above these.
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

# Hide Proxy from destination server
# Needed to share sessions
via off
forwarded_for off
request_header_access Allow allow all 
request_header_access Authorization allow all 
request_header_access WWW-Authenticate allow all 
request_header_access Proxy-Authorization allow all 
request_header_access Proxy-Authenticate allow all 
request_header_access Cache-Control allow all 
request_header_access Content-Encoding allow all 
request_header_access Content-Length allow all 
request_header_access Content-Type allow all 
request_header_access Date allow all 
request_header_access Expires allow all 
request_header_access Host allow all 
request_header_access If-Modified-Since allow all 
request_header_access Last-Modified allow all 
request_header_access Location allow all 
request_header_access Pragma allow all 
request_header_access Accept allow all 
request_header_access Accept-Charset allow all 
request_header_access Accept-Encoding allow all 
request_header_access Accept-Language allow all 
request_header_access Content-Language allow all 
request_header_access Mime-Version allow all 
request_header_access Retry-After allow all 
request_header_access Title allow all 
request_header_access Connection allow all 
request_header_access Proxy-Connection allow all 
request_header_access User-Agent allow all 
request_header_access Cookie allow all 
request_header_access All deny all

Есть ли способ проверить, достигают ли мои соединения VPS?

Я не нашел журнала Squid, кроме его access.log , который ничего не говорит о моем домашнем подключении;

1
задан 2 December 2015 в 15:19
1 ответ

Оказывается, это проблема с центром обработки данных Linode.

traceroute указал, что пакеты отбрасывались после прибытия в Linode Atlanta Datacenter.

Примечание: общедоступный сервер IP и имя хоста намеренно пропущены

$ sudo traceroute -p 3128 HOSTNAME --tcp
traceroute to HOSTNAME (PUBLIC_IP), 30 hops max, 60 byte packets
1 192.168.0.254 (192.168.0.254) 0.922 ms 1.337 ms 2.016 ms
2 200.150.94.3 (200.150.94.3) 11.970 ms 12.337 ms 12.699 ms
3 trunk11-src1km3a-src1cos.copel.net (200.150.92.107) 11.980 ms 12.928 ms 12.962 ms
4 177.84.164.33 (177.84.164.33) 14.230 ms 15.943 ms 16.306 ms
5 149.3.181.42 (149.3.181.42) 17.045 ms 17.889 ms 18.127 ms
6 xe-7-2-1.ashburn2.ash.seabone.net (195.22.199.187) 171.647 ms xe-0-1-2.ashburn2.ash.seabone.net (89.221.40.3) 163.118 ms 161.458 ms
7 xe-7-0-1.ashburn2.ash.seabone.net (195.22.199.189) 163.412 ms xe-2-2-2.ashburn2.ash.seabone.net (195.22.199.183) 159.763 ms xe-7-0-1.ashburn2.ash.seabone.net (195.22.199.189) 162.821 ms
8 ae13.er2.iad10.us.zip.zayo.com (64.125.12.1) 161.005 ms 160.879 ms 161.481 ms
9 ae7.er1.iad10.us.zip.zayo.com (64.125.25.49) 146.142 ms 144.668 ms 146.361 ms
10 ae6.cr1.dca2.us.zip.zayo.com (64.125.20.117) 147.399 ms 147.831 ms 148.792 ms
11 ae2.mpr4.atl6.us.zip.zayo.com (64.125.25.46) 150.200 ms ae4.mpr3.atl6.us.zip.zayo.com (64.125.31.197) 144.751 ms ae2.mpr4.atl6.us.zip.zayo.com (64.125.25.46) 146.808 ms
12 ae4.mpr3.atl6.us.zip.zayo.com (64.125.31.197) 143.534 ms 143.451 ms 146.218 ms
13 * * *
...
30 * * *

Как отмечалось ранее, он прошел через порт 53128.

$ sudo traceroute -p 53128 HOSTNAME --tcp
traceroute to HOSTNAME (PUBLIC_IP), 30 hops max, 60 byte packets
1 192.168.0.254 (192.168.0.254) 0.931 ms 1.458 ms 1.968 ms
2 200.150.94.3 (200.150.94.3) 12.079 ms 12.222 ms 12.362 ms
3 trunk11-src1km3a-src1cos.copel.net (200.150.92.107) 51.764 ms 52.274 ms 52.466 ms
4 177.84.164.33 (177.84.164.33) 14.533 ms 14.910 ms 15.449 ms
5 149.3.181.42 (149.3.181.42) 16.408 ms 17.265 ms 17.720 ms
6 xe-2-2-2.ashburn2.ash.seabone.net (195.22.199.183) 171.688 ms xe-7-2-1.ashburn2.ash.seabone.net (195.22.199.187) 161.815 ms xe-0-1-2.ashburn2.ash.seabone.net (89.221.40.3) 162.661 ms
7 xe-2-3-1.ashburn2.ash.seabone.net (195.22.199.181) 163.044 ms xe-2-2-2.ashburn2.ash.seabone.net (195.22.199.183) 160.476 ms xe-7-0-2.ashburn2.ash.seabone.net (195.22.199.185) 161.247 ms
8 ae13.er2.iad10.us.zip.zayo.com (64.125.12.1) 162.917 ms 162.569 ms 164.899 ms
9 ae7.er1.iad10.us.zip.zayo.com (64.125.25.49) 149.290 ms 147.938 ms ae6.cr1.dca2.us.zip.zayo.com (64.125.20.117) 150.054 ms
10 ae2.mpr4.atl6.us.zip.zayo.com (64.125.25.46) 150.416 ms ae6.cr1.dca2.us.zip.zayo.com (64.125.20.117) 145.685 ms 146.062 ms
11 ae4.mpr3.atl6.us.zip.zayo.com (64.125.31.197) 145.271 ms ae2.mpr4.atl6.us.zip.zayo.com (64.125.25.46) 146.286 ms ae4.mpr3.atl6.us.zip.zayo.com (64.125.31.197) 143.456 ms
12 128.177.104.134.IPYX-092136-ZYO.zip.zayo.com (128.177.104.134) 143.646 ms ae4.mpr3.atl6.us.zip.zayo.com (64.125.31.197) 145.377 ms 143.066 ms
13 128.177.104.134.IPYX-092136-ZYO.zip.zayo.com (128.177.104.134) 147.494 ms 148.962 ms 148.619 ms
14 router1-atl.linode.com (64.22.106.10) 148.807 ms 146.101 ms PRIVATE_HOSTNAME.members.linode.com (PUBLIC_IP) 145.706 ms

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

Здравствуйте,

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

Между тем, подойдет ли вам этот другой порт? Я мог бы также перенесите вас в другой центр обработки данных, если вы хотите, с работающим 3128 порт - возможно, Фремонт, Калифорния, или Ньюарк, Нью-Джерси ?:

 https://www.linode.com/speedtest
 

Сообщите нам.

С уважением, Группа поддержки Роланда Линода

0
ответ дан 4 December 2019 в 06:49

Теги

Похожие вопросы