Thursday, June 11, 2020

代理主機維護策略

昨天又失去一台 HP 代理主機, 也就是編號 42 的 Squid Proxy Server. 因此目前只剩下 4, 53 與 69 等三台.

雙協定支援代理主機的需求

也許大家會存疑, 機械設計科系為何需要自行安裝維護網路代理主機?假如根據學校多年前回覆, 之所以拆掉校級的代理主機設置, 原因是聯外頻寬已經很足夠, 因此不需要網路代理主機.

但是, 這種假設是, 系上的 IPv4 數量足夠, 而大部分的外部伺服器都已經支援 IPv6, 但是對於平日電腦總數量超過 300 台的機械設計系, 希望上課時讓每一位學員都能將課程資料存取於 Github.com, 這兩個條件都不存在.

因此, 從電腦輔助設計室上課的需求來看, 採用 IPv4 NAT 的模式, 並無足夠的頻寬讓 至少 50 台電腦快速直接對 Github.com 連線, 而如眾所知, Github.com 目前尚不支援 IPv6 網路協定.

因此, 2-3 台能夠同時支援 IPv4 與 IPv6 網路協定的代理主機, 似乎是可行的方案之一.

維護全時運作主機的可能方案

假如以電腦輔助設計室每週 40 堂課計算, 其中只有至多 14 堂課需要使用網路代理主機, 理論上並沒有必要全時讓這些代理主機運作, 而只要維持一台連內 (69), 一台連外 (4), 其餘的 IPv4 伺服器 IP 位址, 可以交由每班中至多 5 個分組的組長, 以虛擬主機 bridged 網路的方式各自管理分組中的代理主機, 其中可能的編號將有 (24, 32, 34, 39, 42)等五台.

其中, 因為在上學期的課程有大一的計算機程式與大二的電腦輔助設計實習課程, 而下學期的課程則有大一的網際內容管理與大二的協同產品設計實習, 正好可以在各課程中安排學長與學弟妹共同維護這五台代理主機的互動傳承內容.

Squid 代理主機的安裝

以 Ubuntu 20.04 伺服器主機為例, 安裝 Squid Proxy 伺服器:

sudo apt install squid

接下來, 利用 /etc/squid/squid.conf 進行配置:

# 定義可以連線電腦網路位置範圍或特定 IP
acl cad_lab src 192.130.17.0/24
acl cad_lab src 192.127.237.33
acl cad_lab src 2001:288::/64

# 定義可以連線通過的埠號
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 88
acl Safe_ports port 89

#acl Safe_ports port 21 # ftp
acl SSL_ports port 8843
acl SSL_ports port 5443
acl SSL_ports port 8443
acl Safe_ports port 8443

acl SSL_ports port 9443
acl Safe_ports port 9443

acl SSL_ports port 22
acl Safe_ports port 22

acl Safe_ports port 443 # https
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

# 除了前面定義的安全埠號外, 一律拒絕連線
# Deny requests to certain unsafe ports
http_access deny !Safe_ports

# 除了前面定義的安全埠號外, 一律不准連線
# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

# 只允許前面定義的網路 IP 電腦連線, 其餘一律禁止
http_access allow cad_lab
http_access deny all
# Only allow cachemgr access from localhost
http_access allow localhost manager
http_access deny manager

#http_access allow localnet
http_access allow localhost

# And finally deny all other access to this proxy
http_access deny all

# Squid normally listens to port 3128
http_port 3128

#cache_dir ufs /var/spool/squid 100 16 256
icp_port 3130
icp_access allow all

cache_dir ufs /var/spool/squid 2000 16 256
cache_peer 192.130.17.4 sibling 3128 3130
cache_peer 192.130.17.42 sibling 3128 3130
cache_peer 192.130.17.53 sibling 3128 3130


#
# Add any of your own refresh_pattern entries above these.
#
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320

max_filedesc 40960
cache_mem 4000 MB

修改 /etc/squid/squid.conf 後, 以:

sudo systemctl restart squid 重新啟動.

假如要讓 Virtualbox 虛擬主機與 Windows 10 host 啟動開啟虛擬代理主機, 可以設定使用 VBoxVmService, 但是 5.X 的 Virtualbox 必須與 VBoxVmService 5.X 版配合, 而 6.X 的版本也必須互動升級配置.

後記:

42 是一台 HP ML 30 gen9 的機器, 2017 安裝的 Ubuntu 在前幾天停止運作後, 直接將 Host 裝上 Win 10, 因無法從 USB 安裝, 只能用 blueray dvd 重新安裝, 然後外部設為 39, 然後將虛擬 proxy 伺服器設為 42, 目前仍然加入服役中.

No comments:

Post a Comment