使用sshuttle構(gòu)建一個(gè)窮人的虛擬專網(wǎng)
如今,企業(yè)網(wǎng)絡(luò)經(jīng)常使用“虛擬專用網(wǎng)絡(luò)”來保證員工通信安全。但是,使用的協(xié)議有時(shí)會(huì)降低性能。如果你可以使用 SSH 連接遠(yuǎn)程主機(jī),那么你可以設(shè)置端口轉(zhuǎn)發(fā)。但這可能會(huì)很痛苦,尤其是在你需要與該網(wǎng)絡(luò)上的許多主機(jī)一起使用的情況下。試試 sshuttle
,它可以通過 SSH 訪問來設(shè)置快速簡(jiǎn)易的虛擬專網(wǎng)。請(qǐng)繼續(xù)閱讀以獲取有關(guān)如何使用它的更多信息。
sshuttle
正是針對(duì)上述情況而設(shè)計(jì)的。遠(yuǎn)程端的唯一要求是主機(jī)必須有可用的 Python。這是因?yàn)?sshuttle
會(huì)構(gòu)造并運(yùn)行一些 Python 代碼來幫助傳輸數(shù)據(jù)。
安裝 sshuttle
sshuttle
被打包在官方倉庫中,因此很容易安裝。打開一個(gè)終端,并使用 sudo 來運(yùn)行以下命令:
$ sudo dnf install sshuttle
安裝后,你可以在手冊(cè)頁中找到相關(guān)信息:
$ man sshuttle
設(shè)置虛擬專網(wǎng)
最簡(jiǎn)單的情況就是將所有流量轉(zhuǎn)發(fā)到遠(yuǎn)程網(wǎng)絡(luò)。這不一定是一個(gè)瘋狂的想法,尤其是如果你不在自己家里這樣的受信任的本地網(wǎng)絡(luò)中。將 -r
選項(xiàng)與 SSH 用戶名和遠(yuǎn)程主機(jī)名一起使用:
$ sshuttle -r username@remotehost 0.0.0.0/0
但是,你可能希望將該虛擬專網(wǎng)限制為特定子網(wǎng),而不是所有網(wǎng)絡(luò)流量。(有關(guān)子網(wǎng)的完整討論超出了本文的范圍,但是你可以在維基百科上閱讀更多內(nèi)容。)假設(shè)你的辦公室內(nèi)部使用了預(yù)留的 A 類子網(wǎng) 10.0.0.0 和預(yù)留的 B 類子網(wǎng) 172.16.0.0。上面的命令變?yōu)椋?/p>
$ sshuttle -r username@remotehost 10.0.0.0/8 172.16.0.0/16
這非常適合通過 IP 地址訪問遠(yuǎn)程網(wǎng)絡(luò)的主機(jī)。但是,如果你的辦公室是一個(gè)擁有大量主機(jī)的大型網(wǎng)絡(luò),該怎么辦?名稱可能更方便,甚至是必須的。不用擔(dān)心,sshuttle
還可以使用 –dns
選項(xiàng)轉(zhuǎn)發(fā) DNS 查詢:
$ sshuttle --dns -r username@remotehost 10.0.0.0/8 172.16.0.0/16
要使 sshuttle
以守護(hù)進(jìn)程方式運(yùn)行,請(qǐng)加上 -D
選項(xiàng)。它會(huì)以 syslog 兼容的日志格式發(fā)送到 systemd 日志中。
根據(jù)本地和遠(yuǎn)程系統(tǒng)的功能,可以將 sshuttle
用于基于 IPv6 的虛擬專網(wǎng)。如果需要,你還可以設(shè)置配置文件并將其與系統(tǒng)啟動(dòng)集成。如果你想閱讀更多有關(guān) sshuttle
及其工作方式的信息,請(qǐng)查看官方文檔。要查看代碼,請(qǐng)進(jìn)入 GitHub 頁面。
題圖由 Kurt Cotoaga 拍攝并發(fā)表在 Unsplash 上。