Linux - 本機上的 Squid 控制傳出流量

Linux - 本機上的 Squid 控制傳出流量

我正在嘗試在我的計算機上設置魷魚以僅控制來自同一台計算機的傳出流量。如果我的理解是正確的,squid 在大多數 Linux 發行版上都以用戶「squid」的身份運行(我的是 Fedora,如果重要的話?)。

我已經設定 iptables 來丟棄所有傳出資料包,除了來自 uid 0 和 uid 23(root 和魷魚)的資料包。

:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -m owner --uid-owner 0 -j ACCEPT
-A OUTPUT -m owner --uid-owner 23 -j ACCEPT
-A OUTPUT -j DROP
COMMIT

然後,我需要為每個本機使用者帳戶手動將魷魚代理資訊輸入到瀏覽器中(所以我認為我不需要透明設定)。如果可能的話,我希望使用者/通行證能夠連接到魷魚,以防止使用者除了透過魷魚代理之外無法存取網路?

我目前的squid.conf如下,但它根本不起作用,並且顯然沒有包含用戶/密碼要求:

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 allow localhost
http_access deny all
http_port 3128
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 .   

我想要做的事情是否可以實現,我是否以正確的方式去做?

我用 iptables 所做的事情會起作用嗎?

我意識到這不是我要在 10 分鐘內學會正確設定的東西,因此歡迎任何幫助/指導指南甚至替代解決方案來實現這一目標?

答案1

您可能需要至少為其他程式開放對 DNS 的存取。

Squid 確實有一個身份驗證模組,但在您的情況下不需要它。由於只有魷魚可以訪問網絡,因此所有用戶都將被迫使用它。

檢查用於設定代理的環境變數並進行全域配置。你http_proxy至少應該設定一下。

有一種wpad.dat配置代理的機制,但我沒有按照您的預期使用它。

我想你會發現很多服務使用了未列出的端口,瀏覽體驗不會很好。

由於您似乎沒有封鎖任何站點,因此僅使用 限制連接埠可能會更簡單iptables

相關內容