用dynamicDNS通过ssh连接到一台vpn上的机器

我在本地networking上设置了我的路由器,使用dynamicDNS(no-ip)来获取“静态”主机名。 我已经转发端口22到我的本地电脑,我可以远程login到它使用SSH。 我还需要机器连接到一个VPNnetworking到达我必须使用的服务器。 不幸的是,一旦我启动VPN,我断开连接,不能再使用静态主机名重新连接。 我仍然可以ping主机名,因为路由器会回答,但我不能ssh到我需要达到的机器了。

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

我正在使用vpnc来连接到vpn,但是,这是我的大学提供的自定义版本。 他们说,通常的vpnc客户端不兼容。 他们还提供了一个看起来像这样的configuration文件

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

还有一个证书文件。 有没有可能调整路由或类似的,所以我可以(重新)连接初始化vpn后vpnc连接?

从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. 

所以你的stream量很可能被引导到你的大学,如果他们有一个限制性的防火墙端口22可以closures外面。 所以要么你的networkingpipe理员改变VPN服务器设置,为了不设置连接的默认路由,或者你必须改变客户端的行为。 显然没有select这样做(或者至less我没有发现它),但我find了一个解决方法在这里 。 复制/ etc / vpnc / vpnc脚本并编辑原始文件。 在我的版本中,我有两个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 } 

当心,我没有testing这些修改,所以你可能需要改变他们一点。