लिनक्स मशीन पर रूटिंग टेबल्स डिबगिंग के लिए उपकरण?


19

क्या कोई उपकरण है जो लिनक्स मशीन पर राउटिंग टेबल डिबग करता है?

मेरा मतलब है कि मैं इसमें एक आईपी पते को इनपुट करके उपयोग कर सकता हूं, यह मौजूदा राउटिंग टेबल को ध्यान में रखेगा और मैचों को टेबल से आउटपुट करेगा, इसलिए मुझे अंदाजा हो सकता है कि पैकेट कहां जाएंगे?


1
होस्ट के लिए निर्धारित मार्गों और इंटरफेस में से, आप बस यह जानना चाहते हैं कि किसी दिए गए आईपी के लिए कौन सा मार्ग लिया जाएगा? एक शांत उपयोगिता की तरह लगता है। यदि कोई मौजूद नहीं है, तो इसे किसी भी भाषा में लिखा जा सकता है, यहां तक ​​कि बैश भी।
एंड्रयू

आपके राउटर मशीन से कितने राउटर जुड़े हैं? क्या आपको tracerouteइसके बजाय मतलब था?
ott--

जवाबों:


39

का उपयोग करें ip route getनेटवर्क रूटिंग को कॉन्फ़िगर करने से :

ip route getआदेश एक उपयोगी सुविधा है जो आपको मार्ग है जिस पर प्रणाली पैकेट भेजने उदाहरण के लिए, एक निर्धारित आईपी पते तक पहुँचने के लिए होगा क्वेरी करने के लिए अनुमति देता है:

# ip route get 23.6.118.140
23.6.118.140 via 10.0.2.2 dev eth0 src 10.0.2.15
cache mtu 1500 advmss 1460 hoplimit 64

इस उदाहरण में, 23.6.118.140 के पैकेटों को गेटवे 10.0.2.2 के माध्यम से eth0 इंटरफ़ेस से बाहर भेजा जाता है।


ओह, मैं ऐसा ही करता हूं। +1
रोएमा

OpenWRT पर हम्म तो मुझे सिर्फ iproute2 इंस्टॉल करना है और फिर शायद मैं ऐसा कर सकता हूं? ifconfig डिफ़ॉल्ट रूप से इसके साथ आता है, मुझे यकीन है कि मैं इसे opkg के साथ जोड़ सकता हूं ... लेकिन अगर यह एक विकल्प नहीं था तो roaima का जवाब बेहतर होगा, अगर iproute2 उपलब्ध है तो यह बहुत अच्छा होगा, धन्यवाद तुम दोनों।
leeand00

1
मेरे पास OpenWRT नहीं है, लेकिन उनके प्रलेखन को देखने से ऐसा लगता है कि वे अब इसे ipपैकेज कहते हैं ।
मार्क प्लॉटनिक

और यहाँ उपकरण सेट है यह एक हिस्सा है: en.wikipedia.org/wiki/Iproute2
leeand00

उह ... क्या यह नीति आधारित रूटिंग के साथ काम करता है? कहो कि मैं iptables, FWMARK नियमों के साथ पोर्ट विशिष्ट रूटिंग का पता कैसे लगाऊं?
5

2

निम्नलिखित स्क्रिप्ट को कहीं उपयोगी सहेजें। इसे आईपी पते के साथ कॉल करें जिसे आप परीक्षण करना चाहते हैं और यह आपको संबंधित मार्ग बताएगा।

#!/bin/bash
#
# Find the appropriate routing entry for a given IP address
########################################################################

########################################################################
# Calculate the base network address for a given addres and netmask
#
baseNet() {
    local ADDRESS="$1" NETMASK="$2"
    ipcalc -nb "$ADDRESS" "$NETMASK" | awk '$1=="Network:"{print $2}'
}

########################################################################
# Go
#
for IPADDRESS in "$@"
do
    netstat -rn |
        tac |
        while read DESTINATION GATEWAY GENMASK FLAGS MSS WINDOW IRTT IFACE
        do
            NSBASENET=$(baseNet "$DESTINATION" "$GENMASK")
            IPBASENET=$(baseNet "$IPADDRESS" "$GENMASK")
            if test "X$NSBASENET" = "X$IPBASENET"
            then
                if test '0.0.0.0' = "$GATEWAY"
                then
                    echo "Matches $DESTINATION with netmask $GENMASK directly on $IFACE"
                else
                    echo "Matches $DESTINATION with netmask $GENMASK via $GATEWAY on $IFACE"
                fi
                break
            fi
        done
done

# All done
#
exit 0

उदाहरण उपयोग

./what-route.sh 10.0.5.6
Matches 0.0.0.0 with netmask 0.0.0.0 via 10.0.2.2 on eth0
./what-route.sh 10.0.2.6
Matches 10.0.2.0 with netmask 255.255.255.0 directly on eth0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.