在現代文明生活中,最常被忽略的運輸型態"管道運輸",如自來水、瓦斯等。建立基礎架構時應該考慮這類管道,這樣才能顯出好棒棒工科不是唸假的,思考果然有夠全面。
就像維運人員最害怕的就是遠端更改網路設定,尤其是防火牆設定。因為一旦斷線,就要收拾流浪天涯小包包 回家吃自己 去機房收拾善後。因此總是有個管理用網路通道簡直是一種恩賜,就像iLO點亮了工程師黑暗的人生。但是沒有錢的前提下怎麼做?
目前最棒的,最普及的連線技術就是SSH。還好目前系統被刪減成兩種,ubuntu & openwrt。那就建立ssh reverse tunnel, everwhere.
config autossh
option ssh '-i /home/icekimo/.ssh/id_dropbear -y -y -N -T -R 50201:localhost:22 -R 7000:192.168.1.139:7000 -R 50200:192.168.1.192:22 icekimo@icekimo.mooo.com'
option gatetime '0'
option monitorport '0'
option poll '60'
option enabled '1'
像這個設定檔裡面直白的說參數範例重點只是在option ssh那行
sudo /etc/init.s/autossh start || sudo /etc/init.s/autossh reload
[Unit]
Description=little piggy go home
ConditionPathExists=|/usr/bin
After=network.target
[Service]
User=icekimo
ExecStart=/usr/bin/ssh -NTC -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -o StrictHostKeyChecking=no -i /home/icekimo/.ssh/id_rsa -R 50999:localhost:22 icekimo@ts109ii.myqnapcloud.com
# Restart every >2 seconds to avoid StartLimitInterval failure
RestartSec=5
Restart=always
[Install]
WantedBy=multi-user.target
而重啟服務可以用systemctl(也可以用service)
sudo systemctl enable littlepiggygohome.service
sudo systemctl restart littlepiggygohome.service
這樣可以在主機間建立複雜的管道,作為管理與傳遞設定檔用。若是在較大型的環境中,會希望採用outband的管理網路,意思就是管理封包是另一個網路(孔),不會佔用服務流量。但是我們沒有這樣的本錢,所以inband加上一點點QoS就很讚了。
誠如Day 5 Races to Zion裡面暗喻的,ssh tunnel裡面頻寬其實很窄,一個連線大約3MB/s而已。如果要真正作為加密通道使用,那就要美國痞子匹茲堡高速計算中心創造出來的High Performance SSH/SCP (HPN-SSH),加速的原理在人家網頁都講了,我就英文不好不拾人牙慧,人云亦云了。