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: முகவரிகள், இடைமுகங்கள் மற்றும் பாதைகள்
ip கட்டளை iproute2 தொகுப்பிலிருந்து வருகிறது; இது வழக்கற்றுப் போன 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 சோதனை
DNS சோதனைக்கான முக்கிய கருவி dig — அது dnsutils தொகுப்பிலிருந்து வருகிறது (RHEL-இல் bind-utils). சுருக்கமான வடிவம் பதிலை மட்டுமே தருகிறது:
$ 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 பதில் தராவிட்டால், குற்றவாளி உள்ளூர் resolver: /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 வேலை செய்யும்போது வெறுமையாக இருந்தால் அல்லது பிழை வந்தால் பிரச்சினை resolver-இல் உள்ளது. - போர்ட்:
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 பாடநெறியில் நடைமுறையுடன் கற்பிக்கப்படுகின்றன.
அடிக்கடி கேட்கப்படும் கேள்விகள்
ஏன் என் அமைப்பில் 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: с нуля до уверенного администрирования” பாடநெறியில் இந்தத் தலைப்பு பயிற்சியுடன் விரிவாக விளக்கப்பட்டுள்ளது.
பாடநெறிக்குச் செல்