Centos/Ubuntu 連接EasyConnect失敗的解決辦法

Centos/Ubuntu 連接EasyConnect失敗的解決辦法

背景

最近心血來潮要學好linux,索性就直接筆記本上安裝了Centos 8,在上面進行辦公,但是連接內網是通過深信服的EasyConnect ***。在連接過程中遇到了一點問題,並在深信服社區發表發帖求助無果,無奈只能自己閒暇時間摸索嘗試連接,試了幾次,最終找到了思路,讓我搞定了,哈哈,開心,所以分享下,希望能幫到更多人。同事的Ubuntu 18上也有類似情況,也可以通過這種方式解決掉。下面是解決思路

環境信息

系統環境

Centos/Ubuntu 連接EasyConnect失敗的解決辦法

軟件版本

EasyConnect可以直接在server端通過瀏覽器下載,下面是我使用的軟件版本

Centos/Ubuntu 連接EasyConnect失敗的解決辦法

EasyConnect運行的時候會使用到iptables和route兩個程序,沒有的話需要自己安裝下

連接嘗試

以下只是我在嘗試連接過程中個人的理解,因爲此前對這個軟件並不熟悉,如果理解有誤請大家指出

問題排查/定位

安裝成功後EasyConnect會啓動一個EasyMonitor服務,查看服務

[root@linux EasyConnect]# systemctl status EasyMonitor.service 
● EasyMonitor.service - Sangfor EasyMonitor Service
   Loaded: loaded (/usr/lib/systemd/system/EasyMonitor.service; enabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-03-02 21:00:00 CST; 4 days ago
 Main PID: 3279 (EasyMonitor)
    Tasks: 4 (limit: 26213)
   Memory: 3.5G
   CGroup: /system.slice/EasyMonitor.service
           ├─3279 /usr/share/sangfor/EasyConnect/resources/bin/EasyMonitor
           └─3436 /usr/share/sangfor/EasyConnect/resources/bin/ECAgent --resume

Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

可以看到Easyonitor運行正常,並且可執行文件在/usr/share/sangfor/EasyConnect/resources/bin路徑下面

[root@linux EasyConnect]# cd /usr/share/sangfor/EasyConnect/resources/bin/
[root@linux bin]# ls
ca.crt  cert.crt  CSClient  EasyMonitor  ECAgent  s***service

這個目錄下面有四個可執行文件

EasyMonitor,ECAgent是監聽服務,監聽客戶端的啓動,登錄,連接和退出的狀態

CSClient 是實際的客戶端程序

s***service 是連接程序,客戶端可以啓動,但連接不上去就是因爲這個程序沒有啓動

我們到/usr/share/sangfor/EasyConnect/resources目錄下

[root@linux resources]# pwd
/usr/share/sangfor/EasyConnect/resources
[root@linux resources]# ls
app.asar  bin  conf  default_app.asar  EasyConnect.png  electron.asar  lib64  logs  shell  user_cert

在這我就不細講了,我們只用到了兩個路徑

  1. 所有的日誌文件在/usr/share/sangfor/EasyConnect/resources/logs路徑下
  2. 調試腳本在/usr/share/sangfor/EasyConnect/resources/shell路徑下

先到logs路徑下查看

[root@linux logs]# pwd
/usr/share/sangfor/EasyConnect/resources/logs
[root@linux logs]# ls

服務啓動的時候會生成ECAgent.log日誌文件

在啓動程序的時候通過tail -f ECAgent.log查看日誌,在登錄的時候會發現有連接的錯誤日誌

[2020-03-03 09:08:10][E][3436][ 106][RunRegister][plugin] socket thread connect failed, sleep(500000) us
[2020-03-03 09:08:10][D][3436][ 412][HandlerHttpRequest][WebServer] http queryString : op=DoQueryService&arg1=QUERY%20QSTATE%20ALLSERVICES&callback=this.querryQstateAllServicesCallback&token=aa11985c2064f2c42ab2094ca14a2841&Guid=NULL&type=EC
[2020-03-03 09:08:10][D][3436][ 138][DoQueryService][web]qry: QUERY QSTATE ALLSERVICES
[2020-03-03 09:08:10][E][3436][ 165][ConnectDomainSock][cms] /usr/share/sangfor/EasyConnect/resources/conf/ECDomainFile domain socket connect failed, errno:111.
[2020-03-03 09:08:10][E][3436][ 114][Register]cms client connect failed.

服務在啓動的時候會使用s***service通過ECDomainFile socket文件連接server,但是這時候並沒有s***service 進程,所以會連接失敗,查看進程信息

[root@linux logs]# ps -ef | grep EasyConnect
root      3279     1  0 Mar02 ?        00:37:13 /usr/share/sangfor/EasyConnect/resources/bin/EasyMonitor
root      3436     1  0 Mar02 ?        00:37:19 /usr/share/sangfor/EasyConnect/resources/bin/ECAgent --resume
root      3686  5303  0 12:01 tty2     00:00:02 /usr/share/sangfor/EasyConnect/EasyConnect --enable-transparent-visuals --disable-gpu
root      3692  3686  0 12:01 tty2     00:00:00 /usr/share/sangfor/EasyConnect/EasyConnect --type=zygote --no-sandbox
root      3739  3692  0 12:01 tty2     00:00:01 /usr/share/sangfor/EasyConnect/EasyConnect --type=renderer --no-sandbox --primordial-pipe-token=294FF4553195355ED350775CF8642791 --lang=en-US --enable-plugins --node-integration=true --hidden-page --enable-pinch --num-raster-threads=4 --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,3553;0,11,3553;0,12,3553;0,13,3553;0,14,3553;0,15,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,3553;1,11,3553;1,12,3553;1,13,3553;1,14,3553;1,15,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,3553;2,11,3553;2,12,3553;2,13,3553;2,14,3553;2,15,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,3553;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,3553;3,12,3553;3,13,3553;3,14,3553;3,15,3553 --disable-accelerated-video-decode --disable-webrtc-hw-encoding --disable-gpu-compositing --service-request-channel-token=294FF4553195355ED350775CF8642791 --renderer-client-id=3 --v8-natives-passed-by-fd --v8-snapshot-passed-by-fd

這時候我們就用到了第二個路徑(/usr/share/sangfor/EasyConnect/resources/shell)

[root@linux shell]# pwd
/usr/share/sangfor/EasyConnect/resources/shell
[root@linux shell]# ls
dns_service_ctl.sh  EasyConnect.sh  EasyMonitor.sh  envcheck.sh  find_browser_path.sh  list_dns.sh  logout.sh  open_browser.sh  sslcheck.sh  sslservice.sh  startrapp.sh  track_eraser.sh

看名字估計也能猜出大概的意思了(命名果然重要,但是logout.sh不是退出登錄的意思,而是log output日誌輸出....)

我們主要用到下面幾個腳本

  • envcheck.sh 環境檢查,主要是檢查iptables和route是否安裝,默認沒有輸出

  • sslcheck.sh 檢查ssl連接配置文件是否滿足,默認沒有輸出
  • sslservice.sh 啓動s***service,重要性已經不言而喻

好了,接下來就是見證奇蹟的時刻。。

  1. 首先,打開一個terminal 和 EasyConnect客戶端。。
  2. 輸入服務器地址和用戶名密碼,點擊客戶端的Login in

Centos/Ubuntu 連接EasyConnect失敗的解決辦法

  1. 在進度條大概70%的時候,在控制檯啓動s***service(/usr/share/sangfor/EasyConnect/resources/shell/sslservice.sh)

哈哈,大約70%,這個進度條嗖嗖的,時間點要卡準了(拼手速),快了的話會提示Failed to login in with this user account, for a user is online!。慢了還是無法連接

Centos/Ubuntu 連接EasyConnect失敗的解決辦法

  1. 最後成功了,ECAgent.log文件也沒有錯誤日誌了內網也可以ping通了

總結

深信服客服提供的client端版本如下:

SSL ***標準版本M7.6.0及以上版本EC客戶端支持如下linux系統,暫不支持centOS系統
【Linux-Ubuntu版本範圍】
Ubuntu 12.04 (32、64位)
Ubuntu 14.04 (32、64位)
Ubuntu 16.04 (32、64位)
Ubuntu 17.04 (32、64位)
Ubuntu下瀏覽器支持firefox\chrome
【Linux-中標麒麟 版本範圍】
中標麒麟 v6.0 (32、64位)
中標麒麟 v7.0
中標麒麟下瀏覽器支持chrome\firefox
使用瀏覽器登錄只能訪問WEB資源,WEB資源兼容性不好,WEB資源只支持簡單的靜態網頁,不推薦管理員發佈WEB資源的

不太理解爲什麼不支持Centos。。

但是通過手動處理還是可以滿足當前的環境的

Linux使用客戶端要比其他系統上好一點,windows上如果沒有網絡流量的話過段時間會自動登出,但linux上不會,除非斷網時間過長。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章