Linux

使用動態 dns 通過 ssh 連接到 vpn 中的機器

  • June 26, 2013

我已經在本地網路上設置了我的路由器以使用動態 dns(無 IP)來獲取“靜態”主機名。我已將埠 22 轉發到我的本地電腦,我可以使用 ssh 遠端登錄它。我還需要機器連接到 vpn 網路以訪問我必須使用的伺服器。不幸的是,一旦我啟動 vpn,我就會斷開連接,並且無法再使用靜態主機名重新連接。我仍然可以 ping 主機名,因為路由器會應答,但我無法通過 ssh 連接到我需要訪問的機器。

ssh: connect to host myhostname.no-ip.biz port 22: Connection timed out

我正在使用 vpnc 連接到 vpn,但是,它是我的大學提供的自定義建構。他們聲明通常的 vpnc 客戶端不兼容。他們還提供了一個看起來像這樣的配置文件

IPSec gateway vpn.uni-mannheim.de
IPSec ID doniluma
IPSec secret wlan
IKE Authmode hybrid
CA-File uni-ma.pem
Xauth username myusername

和一個證書文件。是否有可能調整路由或類似的,所以我可以在用 vpnc-connect 初始化 vpn 後(重新)連接?

從 VPNC 手冊頁:

   The vpnc daemon by itself does not set any routes, but it calls vpnc-script to do this job. vpnc-script displays a connect banner.  If
   the  concentrator  supplies  a network list for split-tunneling these networks are added to the routing table.  Otherwise the default-
   route will be modified to point to the tunnel.  Further a host route to the concentrator is added in the later case.   If  the  client
   host needs DHCP, care must be taken to add another host route to the DHCP-Server around the tunnel.

因此,您的流量可能會被定向到您的大學,如果他們有限制性防火牆埠 22 可能會在外面關閉。因此,您要麼要求網路管理員更改 VPN 伺服器設置,以免設置連接的預設路由,要麼您必須更改客戶端的行為。顯然沒有選擇這樣做(或者至少我沒有發現它),但我在這裡找到了解決方法。製作 /etc/vpnc/vpnc-script 的副本並編輯原始文件。在我的版本中,我有兩個set_default_route()函式聲明。您必須更改它們才能不更改預設路由。第一個應該是這樣的:

   set_default_route() {
       $IPROUTE route | grep '^default' | fix_ip_get_output > "$DEFAULT_ROUTE_FILE"
#        $IPROUTE route replace default dev "$TUNDEV"
       $IPROUTE route flush cache
   }

第二個

set_default_route() {
   DEFAULTGW="`get_default_gw`"
   echo "$DEFAULTGW" > "$DEFAULT_ROUTE_FILE"
#    route $route_syntax_del default $route_syntax_gw "$DEFAULTGW"
#    route add default $route_syntax_gw "$INTERNAL_IP4_ADDRESS" $route_syntax_interface
}

請注意,我沒有測試這些修改,因此您可能需要對它們進行一些更改。

引用自:https://serverfault.com/questions/517690