萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 代理伺服器與防火牆常見疑難雜症 FAQ 精選

架設 Squid 代理與 iptables 防火牆是 Linux 系統管理員的必修課,但實務上常遇到效能瓶頸、快取失效、DNS 解析慢、核心參數調優等棘手問題。本文精選實戰高頻 Q&A,涵蓋 Squid 上層代理配置、快取機制、核心網路參數、硬體資源規劃,助你快速排除故障、優化架構。

Linux 代理與防火牆 FAQ

場景一:Squid 代理延遲極高(Telnet 79 秒才連通)

現象

客戶端透過 Squid 存取網頁,連線建立需 79 秒,之後傳輸正常。加入 /etc/hosts 後 Telnet 正常,但代理仍慢。

診斷與解決

  1. DNS 反查超時: Squid 預設對客戶端 IP 做反向解析(log_fqdn on 或 ACL 使用主機名)。關閉反查:log_fqdn off、ACL 改用 IP/CIDR。
  2. 上層代理 DNS 慢: 若使用 cache_peer 指向上游代理,確保上游 DNS 正常,或在 Squid 指定 dns_nameservers 指向快速解析器(如 114.114.114.114、8.8.8.8)。
  3. 硬體資源不足: PII 350/64MB RAM 難負荷 Squid。建議:cache_mem 64 MB、maximum_object_size_in_memory 64 KB、增加 cache_dir 磁碟快取、調大 cache_swap_low/high 水位。

場景二:定義上層代理後快取失效

配置片段

cache_peer 170.169.5.71 parent 737 0 no-query

問題分析

no-query 告訴 Squid 不向上層發送 ICP/HTCP 查詢,直接轉發請求。這不會關閉本地快取,但若上層回應 Cache-Control: private/no-store 或 Squid 判斷不可快取(如 POST、授權頁),本地仍不會快取。

解決路徑

  1. 移除 no-query 讓 Squid 嘗試 ICP 查詢(需上層支援)。
  2. 檢查 cache.log 中 TCP_MISS/TCP_HIT 比例,確認快取命中率。
  3. 強制快取特定 URL:refresh_pattern 調整 TTL。
  4. 若上層為 NT ISA/Proxy,確認其允許下游快取。

場景三:核心編譯選項 IP Forwarding/Gatewaying 找不到

背景

舊文檔要求核心關閉 IP forwarding 隔離內外網,但在 Red Hat 6.1 (2.4 核心) 預設模組化,選項位於 Networking options → IP: forwarding/gatewaying。

現代觀點

  • 發布版核心預設模組化載入,無需重編核心。
  • 透過 sysctl 動態控制:net.ipv4.ip_forward = 0(/etc/sysctl.conf 永久生效)。
  • Squid 工作於應用層(第 7 層),不依賴核心 IP Forward;開啟 forward 僅影響第 3 層轉發(如 NAT 閘道)。

場景四:正確定義上層代理並強制所有流量走上游

# squid.conf
cache_peer proxy.upstream.example.com parent 8080 0 no-query default
never_direct allow all
  • default:標記為預設上層代理。
  • never_direct allow all:強制所有請求經上層,不直接連目標站。

場景五:Squid 管理與監控工具

  • cachemgr.cgi:Web 介面查看統計、快取物件、記憶體使用。
  • squidclient -p 3128 mgr:info:CLI 獲取摘要資訊。
  • calamaris / SARG:分析 access.log 產生報表。

防火牆 (iptables) 常見誤區

誤區正確做法
只開放 80/443 就安全需限制來源 IP、速率限制、狀態檢查(-m state --state ESTABLISHED,RELATED)
FORWARD 鏈預設 ACCEPT預設 DROP,僅放行 NAT 後的合法流量
儲存規則用 iptables-save > /etc/sysconfig/iptablesCentOS/RHEL 7+ 改用 firewall-cmd --runtime-to-permanent 或 iptables-save 配合 systemd 服務

效能調優檢核清單

  1. 啟用 async_io、diskd 快取儲存模式(高負載)。
  2. 調大檔案描述符上限:ulimit -n 65535(/etc/security/limits.conf)。
  3. 核心網路參數:net.core.somaxconn=65535、net.ipv4.tcp_max_syn_backlog=8192。
  4. 定期 squid -k rotate 切割日誌,避免磁碟爆滿。
  5. 監控關鍵指標:cache_hit_ratio > 40%、cpu_usage < 70%、swap_used = 0。

結語

Squid 與防火牆的穩定高效,仰賴精準的 DNS 解析、合理的快取策略、充足的硬體資源、核心參數調優、完善的監控告警。遇到問題時,優先查閱 cache.log、access.log、/var/log/messages,善用 squidclient 即時查詢內部狀態,多數疑難雜症皆可迎刃而解。

copyright © 萬盛學電腦網 all rights reserved