Routing
OpenConnect:設置預設路由
我正在嘗試使用 OpenConnect 連接到我公司的 Cisco VPN (AnyConnect)
連接似乎工作得很好,我不明白的是如何設置路由。我正在從命令行執行此操作。
我使用預設的 VPN 腳本進行連接,如下所示:
openconnect -u MyUserName --script path_to_vpnc_script myvpngateway.example.com
我輸入密碼,連接正常,但我的預設路由已更改為強制所有流量通過 VPN 連結,而我只希望公司流量通過 VPN 連結。
我需要將一些變數放入 vpnc 腳本嗎?目前還不是很清楚這是如何完成的。
這個答案如下:
使用以下 bash 包裝腳本呼叫 vpnc 腳本。在包裝腳本中,用於 VPN 連接的路由可以通過 ROUTES 變數指定。
#!/bin/bash # # Routes that we want to be used by the VPN link ROUTES="162.73.0.0/16" # Helpers to create dotted-quad netmask strings. MASKS[1]="128.0.0.0" MASKS[2]="192.0.0.0" MASKS[3]="224.0.0.0" MASKS[4]="240.0.0.0" MASKS[5]="248.0.0.0" MASKS[6]="252.0.0.0" MASKS[7]="254.0.0.0" MASKS[8]="255.0.0.0" MASKS[9]="255.128.0.0" MASKS[10]="255.192.0.0" MASKS[11]="255.224.0.0" MASKS[12]="255.240.0.0" MASKS[13]="255.248.0.0" MASKS[14]="255.252.0.0" MASKS[15]="255.254.0.0" MASKS[16]="255.255.0.0" MASKS[17]="255.255.128.0" MASKS[18]="255.255.192.0" MASKS[19]="255.255.224.0" MASKS[20]="255.255.240.0" MASKS[21]="255.255.248.0" MASKS[22]="255.255.252.0" MASKS[23]="255.255.254.0" MASKS[24]="255.255.255.0" MASKS[25]="255.255.255.128" MASKS[26]="255.255.255.192" MASKS[27]="255.255.255.224" MASKS[28]="255.255.255.240" MASKS[29]="255.255.255.248" MASKS[30]="255.255.255.252" MASKS[31]="255.255.255.254" export CISCO_SPLIT_INC=0 # Create environment variables that vpnc-script uses to configure network function addroute() { local ROUTE="$1" export CISCO_SPLIT_INC_${CISCO_SPLIT_INC}_ADDR=${ROUTE%%/*} export CISCO_SPLIT_INC_${CISCO_SPLIT_INC}_MASKLEN=${ROUTE##*/} export CISCO_SPLIT_INC_${CISCO_SPLIT_INC}_MASK=${MASKS[${ROUTE##*/}]} export CISCO_SPLIT_INC=$((${CISCO_SPLIT_INC}+1)) } # Old function for generating NetworkManager 0.8 GConf keys function translateroute () { local IPADDR="${1%%/*}" local MASKLEN="${1##*/}" local OCTET1="$(echo $IPADDR | cut -f1 -d.)" local OCTET2="$(echo $IPADDR | cut -f2 -d.)" local OCTET3="$(echo $IPADDR | cut -f3 -d.)" local OCTET4="$(echo $IPADDR | cut -f4 -d.)" local NUMADDR=$(($OCTET1*16581375 + $OCTET2*65536 + $OCTET3*256 + $OCTET4)) local NUMADDR=$(($OCTET4*16581375 + $OCTET3*65536 + $OCTET2*256 + $OCTET1)) if [ "$ROUTESKEY" = "" ]; then ROUTESKEY="$NUMADDR,$MASKLEN,0,0" else ROUTESKEY="$ROUTESKEY,$NUMADDR,$MASKLEN,0,0" fi } if [ "$reason" = "make-nm-config" ]; then echo "Put the following into the [ipv4] section in your NetworkManager config:" echo "method=auto" COUNT=1 for r in $ROUTES; do echo "routes${COUNT}=${r%%/*};${r##*/};0.0.0.0;0;" COUNT=$(($COUNT+1)) done exit 0 fi for r in $ROUTES; do addroute $r done exec /etc/openconnect/vpnc-script
然後連接如下:
openconnect -u myusername --script wrapper-script -b vpngateway.example.com