SSD Nodes Learn Hosting plans →
మార్గదర్శకాలు Matt Connorద్వారా Matt Connor · అప్‌డేట్ చేయబడింది 2026-08-30

Linuxలో port అంటే ఏమిటి? Services ఎలా listen చేస్తాయి

Portలు incoming trafficను సరైన serviceకు ఎలా పంపుతాయో తెలుసుకోండి. ssతో ఏ port listen అవుతుందో చూడండి, local portకు public portకు తేడా గుర్తించండి.

పోర్ట్ అంటే వాస్తవంగా ఏమిటి

ఒకే సర్వర్‌పై అనేక సేవలను ఒకేసారి నడిపేటప్పుడు, వాటి network traffic కలగకుండా గుర్తించడానికి ఉపయోగించే సంఖ్యే port. మీ VPSకు ఒక IP address ఉంటుంది. అయితే అదే సమయంలో అది web server, SSH server, databaseలను నడుపుతూ ఉండవచ్చు. ఒక packet వచ్చినప్పుడు, అది వీటిలో ఏ సేవ కోసం వచ్చిందో operating system తెలుసుకోవాలి. దీనికి సమాధానం port number. Web traffic port 443కు, SSH port 22కు వెళ్తాయి. IP address packetను మీ serverకు చేరుస్తుంది. ఆ serverలోని సరైన programకు packetను చేర్చేది port.

Port ఒక 16-bit number. 16 bits పరిధి 0 నుంచి 65535 వరకు ఉంటుంది. 0 reserved కావడంతో, ఆచరణలో ports 1 నుంచి 65535 వరకు ఉంటాయి. 1024 కంటే తక్కువ portsను "well-known" ports అంటారు. వాటిని open చేయడానికి root అవసరం. అందుకే standard services అక్కడే పనిచేస్తాయి: SSH కోసం 22, HTTP కోసం 80, HTTPS కోసం 443, DNS కోసం 53. 1024 కంటే ఎక్కువ portsను సాధారణ programs ఉపయోగించవచ్చు.

ఇవి TCP మరియు UDP అనే రెండు రకాలుగా ఉంటాయి. ఒక రకంలోని port number, మరొక రకంలోని అదే numberకు వేరు. SSH, HTTP, databases వంటి ఎక్కువ services ఉపయోగించేది connection-based protocol అయిన TCP. UDP connectionlessగా ఉంటుంది. ఇది DNS, కొన్ని VPNs వంటి వాటికి ఉపయోగిస్తారు. Firewallలో portను open చేసేటప్పుడు సాధారణంగా ఏ protocolను ఉపయోగించాలో కూడా పేర్కొనాలి. ఉదాహరణకు 22/tcp.

Listening అంటే ఒక ప్రోగ్రామ్ port కోసం వేచి ఉండటం

కనెక్షన్లను స్వీకరించాలనుకునే ప్రోగ్రామ్ port పై “listen” చేయమని kernel ను అడుగుతుంది. ఆ క్షణం నుంచి ఆ port machine పై open అవుతుంది. Firewall అనుమతించిన మేరకు అక్కడికి వచ్చే కనెక్షన్లకు ప్రోగ్రామ్ స్పందిస్తుంది. ఏ program కూడా listen చేయని port కనెక్షన్లను నిరాకరిస్తుంది. అందువల్ల ప్రతి security check లో మొదటి ప్రశ్న: ఏమి listen చేస్తోంది, ఎక్కడ listen చేస్తోంది?

దానికి సమాధానం ఇచ్చే command ss:

sudo ss -tlnp

ఈ flags TCP (t), listening sockets మాత్రమే (l), numeric ports (n; అందువల్ల ssh కాకుండా 22 కనిపిస్తుంది), మరియు ఆ port ను ఉపయోగిస్తున్న process (p) ను సూచిస్తాయి. సాధారణ ఫలితం:

State   Recv-Q  Local Address:Port   Process
LISTEN  0       0.0.0.0:22           sshd
LISTEN  0       127.0.0.1:5432       postgres
LISTEN  0       [::]:80              nginx

Process column ప్రతి port ను ఏ program ఉపయోగిస్తుందో చూపిస్తుంది. మీరు ఉద్దేశపూర్వకంగా అమలులో ఉంచని program ను గుర్తించడానికి ఇదే ఉపయోగపడుతుంది.

Local Address కాలమ్‌లోని సమాచారం ముఖ్యమైనది

ప్రతి port ముందు ఉన్న address ను జాగ్రత్తగా చదవండి. ఆ service కు ఎవరు చేరుకోగలరో అది నిర్ణయిస్తుంది. మీరు తరచుగా చూసే మూడు సందర్భాలు ఉన్నాయి.

0.0.0.0:22 అంటే “ఈ machine వద్ద ఉన్న ప్రతి IPv4 address పై listen చేయడం” అని అర్థం. ఇందులో public address కూడా ఉంటుంది. Firewall అనుమతిస్తే, ఆ service ను IPv4 ద్వారా internet నుంచి చేరుకోవచ్చు.

[::]:80 అంటే IPv6 కోసం అదే విషయం: public address సహా ప్రతి IPv6 address పై listen చేయడం. అనేక programs default గా ఇక్కడ bind అవుతాయి. Linux లో :: socket సాధారణంగా IPv4 connections ను కూడా స్వీకరిస్తుంది.

127.0.0.1:5432 అంటే “loopback పై మాత్రమే listen చేయడం” అని అర్థం. 127.0.0.1 అనేది machine తనతో తాను communicate చేయడానికి ఉపయోగించే address. ఇతర ఏ ప్రదేశం నుంచీ దీనికి routing ఉండదు. ఇక్కడ bind చేసిన service ను అదే server నుంచి మాత్రమే చేరుకోవచ్చు. Firewall ఏం చెప్పినా, internet నుంచి ఎప్పటికీ చేరుకోలేరు. పై Postgres line సహజంగానే సురక్షితంగా ఉంటుంది.

దీనినుంచి ఆచరణాత్మక నియమం స్పష్టంగా తెలుస్తుంది: మీ స్వంత applications మాత్రమే ఉపయోగించే database, cache లేదా admin panel ను 127.0.0.1 కు bind చేయాలి; 0.0.0.0 కు కాదు. అది public address పై ఎప్పుడూ listen చేయకపోతే, attacker చేరుకోవడానికి ఏదీ ఉండదు.

Listening అంటే చేరుకోగలగడం కాదు

ఇక్కడ మరో తేడాను గుర్తించడం వల్ల చాలా గందరగోళం తగ్గుతుంది. యంత్రంపై ఒక port open గా ఉండటం, అంటే ఒక ప్రోగ్రామ్ ఆ port పై listening చేయడం, బయట నుంచి ఆ port reachable గా ఉండటంతో సమానం కాదు. బయట నుంచి చేరుకోగలగడం అంటే firewall ఆ network traffic ను అనుమతించడం. Remote client connect కావాలంటే ఈ రెండూ నిజం కావాలి. Client వైపు ఈ రెండు వైఫల్యాలు కూడా వేర్వేరుగా కనిపిస్తాయి: connection refused అయితే ఏ ప్రోగ్రామ్‌ కూడా listening చేయడం లేదని అర్థం. Connection నిలిచిపోయి చివరకు timeout అయితే సాధారణంగా firewall packet ను drop చేసిందని అర్థం. ఆ రెండు SSH errors సూచించేది ఇదే.

అందువల్ల control కు రెండు layers ఉన్నాయి. ప్రతి service యొక్క bind address ను సెట్ చేసి, ఏది listening చేయాలో మీరు నిర్ణయిస్తారు. Firewall ద్వారా బయట ప్రపంచం ఏదిని చేరుకోగలదో మీరు నిర్ణయిస్తారు. సరిగ్గా నిర్వహించే server రెండింటినీ ఉపయోగిస్తుంది: services అవసరమైన interfaces పై మాత్రమే bind అవుతాయి, అలాగే మీరు స్పష్టంగా అనుమతించని ప్రతిదాన్ని firewall deny చేస్తుంది. ss తో listening చేస్తున్న వాటిని చూడటం మొదటి దశ. Firewall ఏ traffic ను అనుమతిస్తుందో నిర్ణయించడం రెండో దశ. దీనిని UFW తో firewalls 101 లో వివరించాం.

ఇక్కడ ఒక సూక్ష్మమైన సమస్య ఉంది. IPv4 మరియు IPv6 వేర్వేరు protocols. IPv4 ను మాత్రమే కవర్ చేసే firewall ఉంటే, IPv6 పై ఉన్న [::] services open గా మిగిలిపోతాయి. ఈ నిర్దిష్ట సమస్యపై ప్రత్యేక post ఉంది: IPv6 firewall సమస్య.

FAQ

నా Linux serverలో ఏ ports open గా ఉన్నాయో ఎలా చూడాలి?

TCP కోసం sudo ss -tlnp లేదా UDP కోసం sudo ss -ulnp ను run చేయండి. ఇది listening sockets అన్నింటినీ, port ను, అది bind అయిన local address ను, దాన్ని కలిగి ఉన్న process ను చూపిస్తుంది. Local Address column ను చూడండి: 0.0.0.0 లేదా [::] అంటే service network కు exposed గా ఉందని అర్థం. 127.0.0.1 అంటే అది అదే machine పై మాత్రమే listen చేస్తుందని అర్థం.

0.0.0.0 మరియు 127.0.0.1 మధ్య తేడా ఏమిటి?

0.0.0.0 అంటే “అన్ని IPv4 addresses పై listen చేయడం” అని అర్థం. ఇందులో public address కూడా ఉంటుంది. అందువల్ల service ను network నుంచి చేరుకోవచ్చు. 127.0.0.1 అనేది loopback address. Machine తనతో తానే communicate చేసుకోవడానికి దీనిని ఉపయోగిస్తుంది. ఇది ఇతర ప్రదేశాల నుంచి routable కాదు. కాబట్టి దీనికి bind అయిన service ను local machine నుంచే చేరుకోవచ్చు. Internal services ను 127.0.0.1 కు bind చేయండి. అప్పుడు అవి ఎప్పటికీ exposed కావు.

Service పనిచేయడానికి firewallలో port open చేయాలా?

ఇతర machines నుంచి చేరుకోవాల్సిన services కు మాత్రమే అవసరం. 127.0.0.1 కు bind అయిన service కు firewall rule అవసరం లేదు. ఏ external system కూడా దాన్ని చేరుకోలేకపోవడమే కారణం. 0.0.0.0 లేదా [::] పై ఉన్న service కు traffic ను అనుమతించే firewall rule అవసరం. అలాంటి rule జోడించే వరకు దాన్ని default గా deny చేయాలి.

TCP port మరియు UDP port మధ్య తేడా ఏమిటి?

TCP connection-based గా ఉంటుంది. SSH, web servers, databases వంటి చాలా services దీనిని ఉపయోగిస్తాయి. UDP connectionless గా ఉంటుంది. DNS మరియు కొన్ని VPNs దీనిని ఉపయోగిస్తాయి. TCP మరియు UDPలో ఒకే number ఉన్నా అవి వేర్వేరు ports. కాబట్టి 53/tcp మరియు 53/udp వేర్వేరు ports. Firewall rules రాస్తున్నప్పుడు protocol ను పేర్కొనాలి. ఉదాహరణకు 22/tcp.