Forticlient專(zhuān)線多用戶(hù)共享

在遠(yuǎn)程辦公期間,有那么一些同事總是有奇奇怪怪的想法僻焚,比如:“我怎么能從云服務(wù)器訪問(wèn)家里電腦”,“我怎么通過(guò)VPN訪問(wèn)云服務(wù)器”膝擂,“我怎么這樣虑啤,怎么那樣”;下面就分享一個(gè)奇怪的上網(wǎng)方案架馋。

背景概述

國(guó)內(nèi)某搜索引擎大家都知道狞山,有用資料基本查不出來(lái),全特么廣告叉寂,這時(shí)就需要訪問(wèn)一下海外的某搜索引擎等等铣墨,所以就購(gòu)買(mǎi)了某公司的商用專(zhuān)線產(chǎn)品,實(shí)現(xiàn)天津到新加坡網(wǎng)絡(luò)加速办绝,優(yōu)點(diǎn):價(jià)格便宜伊约,速度快;缺點(diǎn):只支持端到端的撥號(hào)連接(Forticlient)孕蝉,并且每個(gè)客戶(hù)端都單獨(dú)收費(fèi)屡律。所以就衍生出“能不能將一個(gè)客戶(hù)端通過(guò)某種方式共享給多人使用”,作為公司“專(zhuān)業(yè)網(wǎng)管”也就只能硬著頭皮嘗試一下了降淮,功夫不負(fù)有心人超埋,還是可以跑通的。

安裝流程

環(huán)境描述

  • 操作系統(tǒng):Ubuntu 1204
  • VPN客戶(hù)端:Openforticlient佳鳖、Wireguard

Openforticlient

github倉(cāng)庫(kù):https://github.com/adrienverge/openfortivpn.git

安裝
apt install openfortivpn
配置

openforticlient配置文件

# cat /etc/openfortivpn/config.conf
# config file for openfortivpn, see man openfortivpn(1)
host = <vpn提供商提供>
port = <vpn提供商提供>
username = <vpn提供商提供>
password = <vpn提供商提供>
set-routes = 0
#set-dns = 0
#pppd-use-peerdns = 0
# X509 certificate sha256 sum, trust only this one!
trusted-cert = 25a0d500f10d6bbe06f0761bcc7a023d6174b82ddab4e4c2ccf9763f1b44748f

openforticlient systemd文件

$cat /etc/systemd/system/openfortivpn.service
[Unit]
Description=OpenfortiVPN daemon
Documentation=OpenfortiVPN daemon
After=network.target

[Service]
Type=simple
ExecStart= /usr/local/bin/openfortivpn -c /etc/openfortivpn/config.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target

啟動(dòng):

systemctl start openfortivpn.service

wireguard

安裝
apt install wireguard
wiregard配置文件

$ cat /etc/wireguard/wg0.conf


[Interface]
Address = 192.168.8.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
ListenPort = 51821
PrivateKey = kOQgWsV9CJ6gob/VOt8+t/Yba9rFmHMwbZp8St5c8kU=

[Peer]
PublicKey = VC4H1P273gsHu6ebyL2gS0j3JDrewM85vcRWld5OuG8=
AllowedIPs = 192.168.8.10/32

3霍殴、服務(wù)器路由表/接口轉(zhuǎn)發(fā)配置

sudo ip rule add from 192.168.8.0/24 table 10
sudo ip route add default dev ppp0 table 10
sudo ip route add 172.16.8.0/22 dev eth0 table 10
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

查看路由表狀態(tài):

iptables -vnL -t  nat
ip route show table 10

附:

有時(shí)VPN鏈接過(guò)多或者forticlient無(wú)故掉線需要重新?lián)芴?hào),所以就寫(xiě)了一個(gè)腳本監(jiān)控它系吩,其實(shí)也可以用Supervisor等服務(wù)替代以下腳本来庭。

進(jìn)程重啟腳本

#!/bin/bash
systemctl restart openfortivpn.service
if test $? -eq 0; then
    sleep 5
    sudo ip rule del from 192.168.8.0/24 table 10
    sudo ip route del default dev ppp0 table 10
    sudo ip route del 172.16.8.0/22 dev eth0 table 10
    sudo  iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

    sudo ip rule add from 192.168.8.0/24 table 10
    sudo ip route add default dev ppp0 table 10
    sudo ip route add 172.16.8.0/22 dev eth0 table 10
    sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
fi
systemctl restart wg-quick@wg0.service

檢測(cè)openfortivpn運(yùn)行狀態(tài)腳本

#!/bin/bash
check() {
    fortivpn_status=`systemctl is-active openfortivpn.service > /dev/null 2>&1 && echo 0 || echo 1`
}
while true; do
    check
    if [ $fortivpn_status -ne 0 ]; then
        systemctl restart openfortivpn.service
        if test $? -eq 0; then
            sleep 5
            sudo ip rule del from 192.168.8.0/24 table 10
            sudo ip route del default dev ppp0 table 10
            sudo ip route del 172.16.8.0/22 dev eth0 table 10
            sudo  iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

            sudo ip rule add from 192.168.8.0/24 table 10
            sudo ip route add default dev ppp0 table 10
            sudo ip route add 172.16.8.0/22 dev eth0 table 10
            sudo  iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
        fi
        systemctl restart wg-quick@wg0.service
    fi
    sleep 30
done

systemd啟動(dòng)文件

[root@vpn01 system]# cat  check_openfortivpn.service
[Unit]
Description=rinetd check

[Service]
WorkingDirectory=/opt
ExecStart=/bin/bash restartVPN.sh
Restart=always

[Install]
WantedBy=multi-user.target

wiregard可以使用wg-portal進(jìn)行用戶(hù)管理。

wiregard客戶(hù)端下載:

Windows

https://download.wireguard.com/windows-client/wireguard-amd64-0.0.30.msi

Mac(app store非中國(guó)區(qū)可安裝)

https://itunes.apple.com/us/app/wireguard/id1451685025?ls=1&mt=12
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末穿挨,一起剝皮案震驚了整個(gè)濱河市月弛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌科盛,老刑警劉巖帽衙,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贞绵,居然都是意外死亡厉萝,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)榨崩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)谴垫,“玉大人,你說(shuō)我怎么就攤上這事蜡饵〉妫” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵溯祸,是天一觀的道長(zhǎng)肢专。 經(jīng)常有香客問(wèn)我悴了,道長(zhǎng)瘫拣,這世上最難降的妖魔是什么暑脆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任封断,我火速辦了婚禮颅崩,結(jié)果婚禮上赵誓,老公的妹妹穿的比我還像新娘菲宴。我一直安慰自己艰管,他們只是感情好前方,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布狈醉。 她就那樣靜靜地躺著廉油,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苗傅。 梳的紋絲不亂的頭發(fā)上抒线,一...
    開(kāi)封第一講書(shū)人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音渣慕,去河邊找鬼嘶炭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逊桦,可吹牛的內(nèi)容都是我干的眨猎。 我是一名探鬼主播,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼强经,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼睡陪!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起夕凝,我...
    開(kāi)封第一講書(shū)人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤宝穗,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后码秉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體逮矛,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年转砖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了须鼎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡府蔗,死狀恐怖晋控,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情姓赤,我是刑警寧澤赡译,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站不铆,受9級(jí)特大地震影響蝌焚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜誓斥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一只洒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧劳坑,春花似錦毕谴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)循帐。三九已至,卻和暖如春忠寻,著一層夾襖步出監(jiān)牢的瞬間惧浴,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工奕剃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捐腿。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓纵朋,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親茄袖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子操软,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容