SSD Nodes Learn Hosting plans →
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-08-31

Ano ang Port at Paano Nakikinig ang Linux Services

Alamin kung paano nire-route ng port ang traffic sa tamang service, paano basahin ang listening ports gamit ang ss, at paano paghiwalayin ang local at public port.

Ano talaga ang port

Ang port ay isang numero na nagbibigay-daan sa isang server na magpatakbo ng maraming serbisyo nang sabay nang hindi naghahalo ang kanilang network traffic. Iisa ang IP address ng iyong VPS, pero maaaring sabay itong magpatakbo ng web server, SSH server, at database. Kapag may dumating na packet, kailangang malaman ng operating system kung alin sa mga serbisyong ito ang tatanggap nito. Ang port number ang nagsasabi nito. Pumupunta ang web traffic sa port 443 at ang SSH sa port 22. Dinadala ng IP address ang packet sa iyong server; dinadala naman ito ng port sa tamang program sa server na iyon.

16-bit na numero ang isang port: nagbibigay ang 16 bits ng mga halagang 0 hanggang 65535, at reserved ang 0, kaya sa aktuwal ay mula 1 hanggang 65535 ang mga port. Ang mga port na mas mababa sa 1024 ay tinatawag na “well-known” ports at nangangailangan ng root upang mabuksan. Kaya naroon ang mga standard service: 22 para sa SSH, 80 para sa HTTP, 443 para sa HTTPS, at 53 para sa DNS. Maaaring gamitin ng mga ordinaryong program ang anumang port na higit sa 1024.

May dalawang uri: TCP at UDP. Hiwalay ang port number sa bawat uri, kahit pareho ang numero. Ang TCP ang connection-based protocol na ginagamit ng karamihan sa mga serbisyo, gaya ng SSH, HTTP, at mga database. Connectionless ang UDP at ginagamit para sa mga bagay gaya ng DNS at ilang VPN. Kapag nagbukas ka ng firewall, karaniwan mong tinutukoy kung alin sa mga ito ang gagamitin, halimbawa 22/tcp.

Ang “listening” ay nangangahulugang naghihintay ang isang program sa isang port

Ang program na tumatanggap ng mga connection ay humihiling sa kernel na mag-“listen” sa isang port. Mula sa sandaling iyon, bukas ang port sa machine at sinasagot ng program ang anumang dumarating dito, ayon sa firewall. Ang port na walang nagli-listen ay basta nagre-refuse ng mga connection. Kaya ang unang tanong sa anumang security check ay: ano ang nagli-listen, at saan.

Ang command para malaman ito ay ss:

sudo ss -tlnp

Ang mga flag ay nangangahulugang TCP (t), listening sockets lamang (l), numeric ports (n, kaya makikita mo ang 22 sa halip na ssh), at ang owning process (p). Karaniwang ganito ang resulta:

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

Ipinapakita ng column na Process kung aling program ang may-ari ng bawat port. Sa ganitong paraan, matutukoy mo ang program na hindi mo sinasadyang iniwang tumatakbo.

Mahalaga ang Local Address column

Basahing mabuti ang address sa unahan ng bawat port, dahil dito nakasalalay kung sino ang makaka-access sa service. May tatlong sitwasyong palagi mong makikita.

Ang 0.0.0.0:22 ay nangangahulugang “makinig sa lahat ng IPv4 address na mayroon ang machine na ito,” kasama ang public address nito. Maa-access ang service mula sa internet gamit ang IPv4, kung pinapayagan ito ng firewall.

Ang [::]:80 ay may parehong kahulugan para sa IPv6: makinig sa lahat ng IPv6 address, kasama ang public address. Maraming program ang default na nagbi-bind dito, at sa Linux, kadalasang tumatanggap din ng IPv4 ang :: socket.

Ang 127.0.0.1:5432 ay nangangahulugang “makinig lamang sa loopback.” Ang 127.0.0.1 ang address na ginagamit ng machine para makipag-ugnayan sa sarili nito, at hindi ito nararaanan ng routing mula sa ibang lugar. Ang service na naka-bind dito ay maa-access lamang mula sa parehong server at hindi kailanman mula sa internet, anuman ang configuration ng firewall. Ligtas sa ganitong setup ang Postgres line sa itaas.

Direktang sumusunod dito ang praktikal na rule: ang database, cache, o admin panel na ginagamit lamang ng sarili mong application ay dapat mag-bind sa 127.0.0.1, hindi sa 0.0.0.0. Kung hindi ito kailanman nakikinig sa public address, walang maaabot ang attacker.

Ang pakikinig ay hindi katumbas ng pagiging reachable

May isa pang pagkakaiba na makakaiwas sa maraming kalituhan. Magkaiba ang bukas na port sa machine, na nangangahulugang may program na nakikinig, at ang port na reachable mula sa labas, na nangangahulugang pinapayagan ito ng firewall. Kailangang parehong totoo ang mga ito para makakonekta ang remote client. Magkaiba rin ang hitsura ng dalawang failure mula sa panig ng client: ang connection na nire-refuse ay nangangahulugang walang nakikinig, samantalang ang connection na nagha-hang at kalaunan ay nagti-time out ay karaniwang nangangahulugang ibinagsak ng firewall ang packet. Ito mismo ang ipinapaliwanag ng dalawang SSH error na iyon.

May dalawang layer ng control. Ikaw ang nagpapasya kung ano ang makikinig sa pamamagitan ng pagtatakda ng bind address ng bawat service. Ikaw rin ang nagpapasya kung ano ang maaaring maabot ng external network gamit ang firewall. Ang maayos na pinapatakbong server ay gumagamit ng pareho: nagbi-bind ang mga service lamang sa mga address na kailangan nila, at dini-deny ng firewall ang lahat ng hindi mo tahasang pinayagan. Ang pagbasa sa mga port na kasalukuyang pinakikinggan gamit ang ss ang unang hakbang; ang pagtukoy kung ano ang pinapayagan ng firewall ang ikalawang hakbang, na saklaw sa panimulang gabay sa firewall gamit ang UFW.

May isang detalyeng madalas magdulot ng problema rito. Magkahiwalay ang IPv4 at IPv6, at kapag IPv4 lamang ang saklaw ng firewall, mananatiling bukas sa IPv6 ang mga [::] service. May sarili itong post: ang patibong ng IPv6 firewall.

FAQ

Paano ko makikita kung aling mga port ang bukas sa Linux server ko?

Patakbuhin ang sudo ss -tlnp para sa TCP o sudo ss -ulnp para sa UDP. Ililista nito ang bawat listening socket, ang port, ang local address na pinag-bind nito, at ang prosesong may-ari nito. Basahin ang column na Local Address: ang 0.0.0.0 o [::] ay nangangahulugang exposed sa network ang service, habang ang 127.0.0.1 ay nangangahulugang sa mismong machine lamang ito nakikinig.

Ano ang pagkakaiba ng 0.0.0.0 at 127.0.0.1?

Ang 0.0.0.0 ay nangangahulugang “makinig sa lahat ng IPv4 address,” kasama ang public address, kaya maa-access ang service mula sa network. Ang 127.0.0.1 ay loopback, ang address na ginagamit ng machine para makipag-ugnayan sa sarili nito. Hindi ito routable mula sa ibang lugar, kaya lokal lamang naa-access ang service na naka-bind dito. I-bind ang mga internal service sa 127.0.0.1 upang hindi kailanman ma-expose ang mga ito.

Kailangan ko bang magbukas ng port sa firewall para gumana ang isang service?

Para lamang ito sa mga service na kailangang ma-access mula sa ibang machine. Ang service na naka-bind sa 127.0.0.1 ay hindi nangangailangan ng firewall rule dahil wala namang external na makakaabot dito. Ang service sa 0.0.0.0 o [::] ay nangangailangan ng firewall rule para payagan ang traffic, at dapat itong i-deny bilang default hanggang magdagdag ka ng rule.

Ano ang pagkakaiba ng TCP port at UDP port?

Ang TCP ay connection-based at ginagamit ng karamihan ng service, gaya ng SSH, web server, at database. Ang UDP ay connectionless at ginagamit ng DNS at ilang VPN. Magkahiwalay na port ang parehong number sa TCP at UDP, kaya magkaiba ang 53/tcp at 53/udp. Kapag nagsusulat ka ng firewall rule, tukuyin ang protocol, halimbawa 22/tcp.