我正在嘗試將我的 VPS 伺服器配置為簡單的 HTTP 代理。我在 CentOS 7.1.1503 上安裝了 Squid 3.3.8,並使用ncsa_auth
.儘管整個方案似乎有效,並且我成功地從另一台電腦連接到我的代理,但我現在面臨網頁加載的問題。例如,當我嘗試打開http://mirrors.liquidweb.com/,網頁無法正確加載,Firefox 只加載了一半,然後我看到一條訊息「正在從 Liquidweb.com 傳輸資料」一段時間。然後它就消失了,沒有任何結果:網頁仍然顯示為半加載。我對這個問題做了一些研究,但我能找到的唯一解決方案與 DNS 問題有關。這似乎不是與 DNS 相關的問題,並且dns_v4_first on
在我的魷魚配置中添加選項沒有產生任何結果。我想特別指出,這不是與網站或瀏覽器相關的問題,因為它出現在我嘗試打開該網站的所有瀏覽器中,並且在瀏覽器設定中禁用代理可以立即修復該問題。這似乎也不是與 ISP 相關的問題,因為我可以透過此代理以約 50Mbps 的平均速度下載檔案。squid.conf
以下是我的和未正確加載網頁的螢幕截圖,提前感謝您的任何猜測!
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic childred 5
auth_param basic realm liproxy
auth_param basic credentialsttl 2 hours
#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
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 deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
#http_access deny to_localhost
acl ncsaauth proxy_auth REQUIRED
http_access allow ncsaauth
dns_v4_first on
http_access deny all
http_port 0.0.0.0:3128
#cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
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
etc/sysconfig/iptables
*filter
# Allows all loopback (lo0) traffic and drop all traffic to 127/8 that doesn't use lo0
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
# Accepts all established inbound connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allows all outbound traffic
# You could modify this to only allow certain traffic
-A OUTPUT -j ACCEPT
-A INPUT -p tcp --dport 3128 -j ACCEPT
# Allows SSH connections
# The --dport number is the same as in /etc/ssh/sshd_config
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
# Now you should read up on iptables rules and consider whether ssh access
# for everyone is really desired. Most likely you will only allow access from certain IPs.
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
# log iptables denied calls (access via 'dmesg' command)
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
# Reject all other inbound - default deny unless explicitly allowed policy:
-A INPUT -j REJECT
-A FORWARD -j REJECT
COMMIT
答案1
您從互聯網上的某個地方複製了防火牆,但顯然沒有完全閱讀和理解它。
考慮這一部分:
# Allow ping
# note that blocking other types of icmp packets is considered a bad idea by some
# remove -m icmp --icmp-type 8 from this line to allow all kinds of icmp:
# https://security.stackexchange.com/questions/22711
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
阻止所有 ICMP 是「一個壞主意」的原因之一是,您還阻止了諸如需要碎片回應之類的內容,這些回應是路徑 MTU 發現工作所必需的。如果這不起作用,那麼您就會遇到網頁掛起、下載停滯等情況。
要解決該問題,您應該準確刪除評論中的內容。
更好的是,完全轉儲此防火牆,然後返回firewalld
CentOS 7 附帶的系統。