LPI Linux 認證/LPIC2 考試 202/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.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
- 練習