跳轉到內容

LPI Linux 認證/LPIC2 考試 202/Web 服務

來自華夏公益教科書,開放的書籍,為開放的世界
 
LPI logo

章節概述

[編輯 | 編輯原始碼]

實現 Web 伺服器維護 Web 伺服器實現代理伺服器

實現 Web 伺服器

[編輯 | 編輯原始碼]

關鍵詞,檔案和實用程式

  • access.log
  • .htaccess
  • httpd.conf
  • mod_auth
  • Htpasswd
  • Htgroup

練習

  • 維護 Web 伺服器
  • 維護 Web 伺服器

關鍵詞,檔案和實用程式

  • httpd.conf

練習

  • 實現代理伺服器

我們將使用 Squid Web 代理伺服器版本 2.4 和 Linux 核心版本 2.4。

代理可以透過兩種方式完成:正常代理透明代理

  • 正常代理中,客戶端在其 Web 瀏覽器軟體中指定代理的主機名和埠號。然後瀏覽器向代理發出請求,代理將請求轉發到原始伺服器。
  • 透明代理中,...

如果使用透明代理:您想強制網路上的客戶端使用代理,無論他們是否願意。您希望客戶端使用代理,但不想讓他們知道他們正在被代理。您希望客戶端被代理,但不想費心在數百或數千個 Web 瀏覽器中更新設定。

有兩種型別的透明代理

  • 閘道器上的 Squid
  • 與閘道器不同的盒子上的 Squid


閘道器盒上的 Squid

[編輯 | 編輯原始碼]

為普通代理設定 Squid 非常簡單:安裝 Squid 後,編輯預設配置檔案 squid.conf 找到以下指令,取消註釋,並更改為適當的值

  • httpd_accel_host virtual
  • httpd_accel_port 80
  • httpd_accel_with_proxy on
  • httpd_accel_uses_host_header on

接下來,檢視 cache_effective_user 和 cache_effective_group 指令,並使用專用使用者和組(例如 squid/squid)設定它們

最後,檢視 http_access 指令。預設值通常是 ``http_access deny all。這將阻止任何人訪問 Squid。目前,您可以將其更改為 ``http_access allow all,但一旦它工作,您可能需要閱讀有關 ACL(訪問控制列表)的說明,並設定快取,以便只有您本地網路(或任何)上的人才能訪問快取。


Squid 中的 ACL 將使您能夠限制對代理的訪問。
ACL 規則的通用格式是
acl aclname acltype string1 ...
然後可以在 http_access 指令中使用 ACL 規則

ACL 型別是

  • Src:acl aclname src ip-address/netmask
acl aclname src 172.16.1.0/24
  • Dst:acl aclname dst ip-address/netmask
acl aclname dst 172.16.1.0/24
  • Time:acl aclname time [day-abbreviations: M,T,W,H,F,A,S] [h1:m1-h2:m2]
acl ACLTIME time M 9:00-17:00
  • Port:acl aclname port port-no
acl acceleratedport port 80
  • Proto:acl aclname proto protocol
acl aclname proto HTTP FTP
  • Method:acl aclname method method-type
acl aclname method GET POST
  • Maxconn:acl aclname maxconn integer
acl twoconn maxconn 5


接下來,使用 squid -z 初始化快取目錄(如果這不是 Squid 的新安裝,您應該跳過此步驟)。接下來,透過 /etc/init.d/squid 指令碼啟動 Squid,您應該能夠將 Web 瀏覽器的代理設定設定為盒子的 IP 和埠 3128(除非您更改了預設埠號),並像正常代理一樣訪問 Squid。實現代理伺服器透明代理可以透過兩種不同的方式設定:在路由器上或在另一個(遠端)主機上路由器上的透明代理將涉及在“正常”模式下設定 Squid,並配置資料包過濾子系統將客戶端的連線重定向到 Squid
所需的核心網路選項是

  • 在“常規設定”下
網路支援
Sysctl 支援
  • 在“網路選項”下
網路資料包過濾
TCP/IP 網路
  • 在“網路選項”->“IP:Netfilter 配置”下
連線跟蹤
IP tables 支援
完全 NAT
REDIRECT 目標支援
  • 在“檔案系統”下
/proc 檔案系統支援

在“網路選項”下,您必須對 快速切換 說 NO!


一旦您的新核心啟動並執行,請確保您啟用了 IP 轉發。接下來,要配置 iptables 以啟用透明代理,您只需
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 3128

到遠端盒子的透明代理

[編輯 | 編輯原始碼]

假設我們有兩個名為 squid-box 和 iptables-box 的盒子,並且它們位於 local-network 網路上。首先,在 Squid 將要執行的機器 squid-box 上,您不需要 iptables 或此機器上的任何特殊核心選項,只需要 Squid。但是,您 *將* 需要上面描述的“http_accel”選項。現在,在將執行 iptables 的機器 iptables-box 上,您需要按照上面描述的配置核心,除了您不需要 REDIRECT 目標支援。您將需要 2 個 iptables 規則
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
iptables -t nat -A POSTROUTING -o eth0 -s local-network -d squid-box -j SNAT --to iptables-box
第一個將資料包從 iptables-box 傳送到 squid-box。第二個確保回覆透過 iptables-box 傳送回來,而不是直接傳送到客戶端。這非常重要,因為否則 Squid 將永遠無法從目標 Web 伺服器接收答案(因此,無法進行快取!)。


關鍵詞,檔案和實用程式

  • squid.conf
  • Acl
  • http_access
  • 練習
華夏公益教科書