OpenConnect: डिफ़ॉल्ट मार्गों की स्थापना


13

मैं अपनी कंपनी के सिस्को वीपीएन (AnyConnect) से कनेक्ट करने के लिए OpenConnect का उपयोग करने की कोशिश कर रहा हूं

कनेक्शन ठीक काम करने लगता है, जो मुझे समझ में नहीं आ रहा है वह यह है कि राउटिंग कैसे सेट करें। मैं कमांड लाइन से ऐसा कर रहा हूं।

मैं इस तरह कनेक्ट करने के लिए डिफ़ॉल्ट वीपीएन स्क्रिप्ट का उपयोग करता हूं:

openconnect -u MyUserName --script path_to_vpnc_script myvpngateway.example.com

मैं अपने पासवर्ड में टाइप करता हूं, और मैं ठीक से जुड़ा हुआ हूं, लेकिन मेरा डिफ़ॉल्ट मार्ग वीपीएन लिंक के नीचे सभी ट्रैफ़िक को बदलने के लिए बदल गया है, जबकि मैं बस चाहता हूं कि वीपीएन लिंक नीचे ट्रैफ़िक हो।

क्या कुछ चर हैं जिन्हें मुझे vpnc-script में डालने की आवश्यकता है? यह बहुत स्पष्ट नहीं है कि यह कैसे किया जाता है।

जवाबों:


16

यह उत्तर इस प्रकार है:

Vpnc- स्क्रिप्ट को कॉल करने के लिए निम्न बैश रैपर स्क्रिप्ट का उपयोग करें। आवरण स्क्रिप्ट में, वीपीएन कनेक्शन के लिए उपयोग किए जाने वाले मार्गों को मार्ग चर के माध्यम से निर्दिष्ट किया जा सकता है।

#!/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

5
किसी के लिए यह सोचकर कि वे कई उपसर्गों / मार्गों को रूट चर में कैसे जोड़ सकते हैं, आप प्रत्येक प्रविष्टि को एक स्थान के साथ अलग करके ऐसा कर सकते हैं। उदाहरण के लिए: ROUTES = "162.73.0.0/16 162.74.0.0/16"
इलियट बी।

6
डेबियन 8, उबंटू 16.04 और 17.04 डिफ़ॉल्ट वीपीएनसी-स्क्रिप्ट पर स्थित है /usr/share/vpnc-scripts/vpnc-script, इसलिए इन ओएस पर मुझे उचित रूप से रैपर के अंतिम तार को बदलने की आवश्यकता थी। आपके समाधान के लिए धन्यवाद!
Envek

मेरा काम वीपीएन 10.0.xx है इसलिए मैंने ROUTES = 10.0.0.0/16 सेट किया है और मैं ubuntu का उपयोग कर रहा हूं, इसलिए मैंने निष्पादन को / usr / share / vpnc-script / vpnc- स्क्रिप्ट पर सेट किया है - लेकिन मैं इसे प्राप्त कर सकता हूं बाहर की दुनिया। कोई विचार?
mmaceachran

मैं वीपीएन से कुछ मार्गों को छोड़कर, विपरीत कैसे प्राप्त कर सकता हूं?
HappyFace

2

यहाँ एक स्क्रिप्ट है जो IPv4 और IPv6 दोनों नेटवर्क पर विभाजित-टनलिंग करती है (प्रदान की गई स्क्रिप्ट आदित्य के आधार पर, जिसने अभी भी सभी IPv6 ट्रैफ़िक को VPN में रूट करने की अनुमति दी है)। यह भी ध्यान दें कि CISCO_SPLIT_INC _ $ {N} _MASK वेरिएबल्स की सेटिंग अब जरूरी नहीं लगती है):

#!/bin/bash
#

# Routes that we want to be used by the VPN link
ROUTES="162.73.0.0/16"
ROUTES6="1ef2:23e:5a4::0/48"

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}+1))
}

export CISCO_IPV6_SPLIT_INC=0
# Do the same for IPv6
function addroute6()
{
    local ROUTE="$1"
    local NET="${ROUTE%%/*}"
    local MASKLEN="${ROUTE##*/}"
    export CISCO_IPV6_SPLIT_INC_${CISCO_IPV6_SPLIT_INC}_ADDR=$NET
    export CISCO_IPV6_SPLIT_INC_${CISCO_IPV6_SPLIT_INC}_MASKLEN=$MASKLEN
    export CISCO_IPV6_SPLIT_INC=$((${CISCO_IPV6_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

for r in $ROUTES6; do
    addroute6 $r
done

exec /etc/openconnect/vpnc-script

1

मैंने पाया कि विभाजित टनलिंग को प्राप्त करने का सबसे अच्छा तरीका वीपीएन-स्लाइस का उपयोग करना है । आप मूल रूप से बता सकते हैं कि आपको कौन से रूट चाहिए और यह आपकी वीपीएन स्क्रिप्ट होगी जो सर्वर को प्रदान करने वाले कॉन्फ़िगरेशन के बजाय रूटिंग करता है:

openconnect --script 'vpn-slice 10.0.0.0/16' -b vpngateway.example.com

हालाँकि डिफ़ॉल्ट रूप से यह आपके डीएनएस सर्वर को सर्वर द्वारा प्रदान किए गए को ओवरराइड नहीं करता है, बल्कि आपको मैन्युअल रूप से सभी डोमेन को सूचीबद्ध करना होगा और यह आपके मेजबानों की फाइल को हल और उन्हें जोड़ेगा:

openconnect --script 'vpn-slice 10.0.0.0/16 host1' -b vpngateway.example.com
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.