Linux
使用動態 dns 通過 ssh 連接到 vpn 中的機器
我已經在本地網路上設置了我的路由器以使用動態 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 }
請注意,我沒有測試這些修改,因此您可能需要對它們進行一些更改。