चीट शीट

Linux नेटवर्क कमांड: ip, ss, ping, traceroute, dig और curl से नेटवर्क की जाँच

अपडेट किया गया: · Skillaria.Top

मुख्य Linux नेटवर्क कमांड हैं — ip (पते, इंटरफ़ेस और रूट), ss (खुले पोर्ट और कनेक्शन), ping और traceroute (होस्ट तक पहुँच और रास्ता), dig (DNS की जाँच) और curl (HTTP सेवा का जवाब)। नेटवर्क की समस्या को परतों में खोजना सबसे आसान है: इंटरफ़ेस और पता, रूट, DNS, पोर्ट, फिर एप्लिकेशन।

Linux की नेटवर्क कमांड लगभग रोज़ की सारी जाँच संभाल लेती हैं: ip पते और रूट दिखाता है, ss खुले पोर्ट और कनेक्शन, ping और traceroute होस्ट की पहुँच जाँचते हैं, dig DNS देखता है और curl वेब सेवा का जवाब। नीचे फ़्लैग वाली चीट शीट है और वह क्रम भी, जिससे «नेटवर्क काम नहीं कर रहा» वाली स्थिति में कारण खोजना आसान होता है।

चीट शीट: Linux नेटवर्क कमांड एक टेबल में

कामकमांड
सभी इंटरफ़ेस के IP पतेip -br addr
इंटरफ़ेस की स्थिति (UP/DOWN)ip -br link
रूट टेबलip route
किसी पते तक पैकेट किस गेटवे से जाएगाip route get 8.8.8.8
पड़ोसी डिवाइस (ARP टेबल)ip neigh
सुनने वाले पोर्ट और प्रोसेसsudo ss -tulpn
स्थापित TCP कनेक्शनss -tn state established
होस्ट की उपलब्धता जाँचनाping -c 4 example.com
होस्ट तक पैकेटों का रास्ताtraceroute example.com, mtr example.com
नाम को पते में बदलनाdig +short example.com
किसी खास DNS सर्वर से पूछनाdig @1.1.1.1 example.com
HTTP जवाब जाँचनाcurl -I https://example.com
कनेक्शन और TLS की विस्तृत जानकारीcurl -v https://example.com
TCP पोर्ट खुला है या नहींnc -zv host 443
होस्ट का नामhostnamectl, hostname -I

ip: पते, इंटरफ़ेस और रूट

iproute2 पैकेज की ip कमांड ने पुरानी ifconfig और route की जगह ले ली है। सब-कमांड छोटे किए जा सकते हैं: ip a = ip addr, ip r = ip route। फ़्लैग -br संक्षिप्त आउटपुट देता है, -c उसमें रंग जोड़ता है।

$ ip -br addr
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.168.1.25/24 fe80::a00:27ff:fe4e:66a1/64
docker0          DOWN           172.17.0.1/16

अगर इंटरफ़ेस पर ज़रूरी नेटवर्क का पता नहीं है या वह DOWN स्थिति में है, तो आगे खोजने की ज़रूरत नहीं — समस्या इसी स्तर पर है।

IP पता जोड़ना और इंटरफ़ेस चालू करना

sudo ip link set eth0 up
sudo ip addr add 192.168.1.50/24 dev eth0
sudo ip addr del 192.168.1.50/24 dev eth0

ip से किए गए बदलाव रीबूट तक ही रहते हैं। स्थायी सेटिंग सिस्टम की कॉन्फ़िगरेशन में लिखी जाती है: Ubuntu में netplan, Fedora और RHEL में NetworkManager (nmcli), सर्वरों पर अक्सर systemd-networkd।

रूट और डिफ़ॉल्ट गेटवे

$ ip route
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.25

$ ip route get 10.20.0.5
10.20.0.5 via 192.168.1.1 dev eth0 src 192.168.1.25 uid 1000

पंक्ति default via वह गेटवे है, जहाँ वह सब जाता है जो किसी अधिक सटीक रूट में नहीं आता। अगर यह पंक्ति नहीं है, तो लोकल नेटवर्क चलने के बावजूद इंटरनेट नहीं चलेगा। रूट जोड़ने के लिए: sudo ip route add 10.20.0.0/16 via 192.168.1.254।

ss: कौन-से पोर्ट खुले हैं और उन्हें कौन सुन रहा है

ss ने netstat की जगह ली है और यह तेज़ चलती है। सबसे आम संयोजन है ss -tulpn:

फ़्लैगमतलब
-t / -uTCP / UDP
-lकेवल सुनने वाले सॉकेट
-pप्रोसेस दिखाना (दूसरे यूज़र के प्रोसेस के लिए sudo चाहिए)
-nपोर्ट और पतों को नामों में न बदलना
-aसभी सॉकेट, स्थापित कनेक्शन सहित
-sसारांश आँकड़े
$ sudo ss -tulpn
Netid State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
tcp   LISTEN 0      511          0.0.0.0:80         0.0.0.0:*     users:(("nginx",pid=812,fd=6))
tcp   LISTEN 0      128          0.0.0.0:22         0.0.0.0:*     users:(("sshd",pid=640,fd=3))
tcp   LISTEN 0      151        127.0.0.1:3306       0.0.0.0:*     users:(("mysqld",pid=901,fd=21))

पते पर ध्यान दें: 0.0.0.0 का मतलब है कि सेवा सभी इंटरफ़ेस से कनेक्शन लेती है, 127.0.0.1 का मतलब है केवल लोकल। यही अक्सर कारण होता है कि डेटाबेस दूसरी मशीन से «जवाब नहीं देता»।

कौन-सा प्रोसेस पोर्ट घेरे है

sudo ss -ltnp 'sport = :8080'
sudo ss -tn dst 10.0.0.7          # किसी खास पते के कनेक्शन
ss -tan state time-wait | wc -l   # TIME-WAIT में कितने सॉकेट हैं

ping: होस्ट उपलब्ध है या नहीं

ping ICMP echo अनुरोध भेजता है और जवाब का समय व पैकेट का नुकसान दिखाता है। Linux पर यह लगातार चलता रहता है, इसलिए -c से पैकेटों की संख्या तय करें।

$ ping -c 4 8.8.8.8
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=12.4 ms
...
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 12.1/12.5/13.0/0.3 ms

उपयोगी फ़्लैग: -i 0.2 — अंतराल, -W 2 — जवाब का टाइमआउट, -4/-6 — प्रोटोकॉल का संस्करण, -s 1472 -M do — बिना फ़्रैगमेंटेशन के MTU जाँचना। ध्यान रखें कि कई सर्वर और क्लाउड ICMP ब्लॉक करते हैं: ping का जवाब न आना अपने-आप में यह साबित नहीं करता कि होस्ट उपलब्ध नहीं है।

traceroute और mtr: पैकेट कहाँ खो रहे हैं

traceroute लक्ष्य तक के रास्ते के नोड दिखाता है। कुछ हॉप पर तारे (*) दिखना सामान्य है — बीच का राउटर जवाब न देता हो सकता है। चिंता की बात तब है जब किसी हॉप के बाद अंत तक सब हॉप पर तारे ही आएँ।

traceroute -n example.com        # DNS नाम के बिना, तेज़
sudo traceroute -T -p 443 example.com   # UDP की जगह TCP, फ़ायरवॉल से आसानी से निकलता है
tracepath example.com            # बिना root के, साथ में MTU भी दिखाता है

mtr ping और traceroute को मिलाता है और हर हॉप के पैकेट-नुकसान के आँकड़े लगातार अपडेट करता है। रिपोर्ट के लिए: mtr -rwc 50 example.com।

dig: DNS की जाँच

dig dnsutils पैकेट से आता है (RHEL में bind-utils) और DNS जाँचने का मुख्य उपकरण है। छोटा रूप सिर्फ़ जवाब लौटाता है:

$ dig +short example.com
93.184.215.14

$ dig example.com MX +short
$ dig @8.8.8.8 example.com A       # किसी खास सर्वर से पूछें
$ dig -x 8.8.8.8 +short            # रिवर्स रिकॉर्ड (PTR)
$ dig +trace example.com           # रूट सर्वरों से शुरू होकर पूरी चेन

पूरे आउटपुट में status देखें: NOERROR — रिकॉर्ड मिला, NXDOMAIN — डोमेन नहीं है, SERVFAIL — सर्वर जवाब नहीं दे सका (अक्सर DNSSEC की समस्या या प्रमाणिक सर्वर बंद होना)। अगर dig @8.8.8.8 जवाब देता है पर सामान्य dig नहीं, तो दोष लोकल रिज़ॉल्वर का है: /etc/resolv.conf और resolvectl status देखें।

ध्यान दें कि dig /etc/hosts नहीं पढ़ता। यह देखने के लिए कि कोई एप्लिकेशन नाम कैसे हल करेगा, getent hosts example.com इस्तेमाल करें।

curl: HTTP और API की जाँच

curl आख़िरी सवाल का जवाब देता है: सेवा जवाब दे रही है और वह क्या लौटा रही है।

कमांडक्या करता है
curl -I URLकेवल हेडर (HEAD अनुरोध)
curl -v URLविस्तार से: DNS, कनेक्शन, TLS, हेडर
curl -L URLरीडायरेक्ट का पालन करना
curl -o file URLफ़ाइल में सेव करना
curl -X POST -H 'Content-Type: application/json' -d '{"a":1}' URLJSON भेजना
curl -k URLसर्टिफ़िकेट की जाँच छोड़ना (केवल डीबगिंग के लिए)
curl --resolve site.ru:443:10.0.0.5 https://site.ruDNS को बायपास करके किसी खास सर्वर से जुड़ना
curl -s -o /dev/null -w '%{http_code} %{time_total}\n' URLजवाब कोड और समय
$ curl -s -o /dev/null -w '%{http_code} %{time_connect} %{time_total}\n' https://example.com
200 0.041 0.187

curl के एरर संदेश बताते हैं कि समस्या किस परत पर है: Could not resolve host — DNS, Connection refused — पोर्ट बंद है या कोई सुन नहीं रहा, Connection timed out — पैकेट फ़ायरवॉल ने रोके या रूट नहीं है, SSL certificate problem — सर्टिफ़िकेट की समस्या।

जाँच का क्रम: जब «नेटवर्क काम नहीं कर रहा»

  1. इंटरफ़ेस और पता: ip -br addr — इंटरफ़ेस UP है, पता मौजूद है।
  2. गेटवे: ip route — default via मौजूद है; ping -c 3 <गेटवे>।
  3. बाहरी नेटवर्क IP से: ping -c 3 1.1.1.1। काम करे तो रूटिंग ठीक है।
  4. DNS: dig +short example.com। IP पर ping चलने के बावजूद खाली या एरर आए, तो समस्या रिज़ॉल्वर में है।
  5. पोर्ट: nc -zv host 443 या curl -v। सर्वर पर — ss -tulpn, सेवा सुन रही है या नहीं और किस पते पर।
  6. फ़ायरवॉल: sudo nft list ruleset, sudo iptables -L -n, sudo ufw status।
  7. एप्लिकेशन: curl -I और सेवा के लॉग (journalctl -u nginx)।

नीचे से ऊपर की ओर जाएँ और कोई कदम न छोड़ें: इस तरह कुछ ही मिनटों में पता चल जाता है कि समस्या किस स्तर पर है, और बेवजह सब कुछ दोबारा शुरू नहीं करना पड़ता।

पुरानी और नई कमांड

पुरानी (net-tools)आधुनिक विकल्प
ifconfigip addr, ip link
route -nip route
arp -nip neigh
netstat -tulpnss -tulpn
nslookupdig

नए डिस्ट्रीब्यूशन में net-tools अक्सर इंस्टॉल ही नहीं होता, इसलिए नई कमांड सीख लेना बेहतर है।

निष्कर्ष

रोज़मर्रा की जाँच के लिए छह Linux नेटवर्क कमांड काफ़ी हैं: ip, ss, ping, traceroute, dig और curl। परत-दर-परत जाँचें — पता, रूट, DNS, पोर्ट, एप्लिकेशन — तो गड़बड़ी जल्दी मिल जाती है। नेटवर्क कमांड और आम गड़बड़ियों का व्यावहारिक अभ्यास Linux कोर्स में किया जाता है।

अक्सर पूछे जाने वाले प्रश्न

Linux में ifconfig कमांड क्यों नहीं है?

वह पुराने net-tools पैकेज में आती है, जो आधुनिक डिस्ट्रीब्यूशन में डिफ़ॉल्ट रूप से इंस्टॉल नहीं होता। ip addr इस्तेमाल करें या net-tools खुद इंस्टॉल करें।

कंसोल से अपना बाहरी IP पता कैसे देखें?

curl ifconfig.me या curl -4 icanhazip.com चलाएँ: बाहरी सेवा वह पता लौटाएगी जिससे आप इंटरनेट पर जाते हैं। ip addr केवल इंटरफ़ेस के पते दिखाता है, जो आमतौर पर आंतरिक होते हैं।

ping और पोर्ट जाँच में क्या अंतर है?

ping ICMP से होस्ट की उपलब्धता जाँचता है, लेकिन किसी खास सेवा के बारे में कुछ नहीं बताता। यह देखने के लिए कि सर्वर किसी पोर्ट पर कनेक्शन लेता है या नहीं, nc -zv host पोर्ट या curl इस्तेमाल करें।

नेटवर्क इंटरफ़ेस की गति और लोड कैसे देखें?

बाइट और एरर के काउंटर ip -s link दिखाता है, और रियल टाइम लोड के लिए iftop, nload या bmon जैसे टूल हैं। दो मशीनों के बीच थ्रूपुट iperf3 से मापा जाता है।

DNS सर्वर को अस्थायी रूप से कैसे बदलें?

systemd-resolved वाले सिस्टम पर sudo resolvectl dns eth0 1.1.1.1 चलाएँ। एक बार की जाँच के लिए सबसे आसान तरीका है अनुरोध में ही सर्वर लिखना: dig @1.1.1.1 example.com।

इस विषय को वीडियो में सीखें

यह विषय “Linux: с нуля до уверенного администрирования” कोर्स में अभ्यास के साथ विस्तार से समझाया गया है।

कोर्स पर जाएँ