Linux नेटवर्क कमांड: ip, ss, ping, traceroute, dig और curl से नेटवर्क की जाँच
मुख्य 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 / -u | TCP / 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}' URL | JSON भेजना |
curl -k URL | सर्टिफ़िकेट की जाँच छोड़ना (केवल डीबगिंग के लिए) |
curl --resolve site.ru:443:10.0.0.5 https://site.ru | DNS को बायपास करके किसी खास सर्वर से जुड़ना |
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 — सर्टिफ़िकेट की समस्या।
जाँच का क्रम: जब «नेटवर्क काम नहीं कर रहा»
- इंटरफ़ेस और पता:
ip -br addr— इंटरफ़ेस UP है, पता मौजूद है। - गेटवे:
ip route—default viaमौजूद है;ping -c 3 <गेटवे>। - बाहरी नेटवर्क IP से:
ping -c 3 1.1.1.1। काम करे तो रूटिंग ठीक है। - DNS:
dig +short example.com। IP पर ping चलने के बावजूद खाली या एरर आए, तो समस्या रिज़ॉल्वर में है। - पोर्ट:
nc -zv host 443याcurl -v। सर्वर पर —ss -tulpn, सेवा सुन रही है या नहीं और किस पते पर। - फ़ायरवॉल:
sudo nft list ruleset,sudo iptables -L -n,sudo ufw status। - एप्लिकेशन:
curl -Iऔर सेवा के लॉग (journalctl -u nginx)।
नीचे से ऊपर की ओर जाएँ और कोई कदम न छोड़ें: इस तरह कुछ ही मिनटों में पता चल जाता है कि समस्या किस स्तर पर है, और बेवजह सब कुछ दोबारा शुरू नहीं करना पड़ता।
पुरानी और नई कमांड
| पुरानी (net-tools) | आधुनिक विकल्प |
|---|---|
ifconfig | ip addr, ip link |
route -n | ip route |
arp -n | ip neigh |
netstat -tulpn | ss -tulpn |
nslookup | dig |
नए डिस्ट्रीब्यूशन में 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: с нуля до уверенного администрирования” कोर्स में अभ्यास के साथ विस्तार से समझाया गया है।
कोर्स पर जाएँ