SSD Nodes Learn
Mga Gabay Matt ConnorNi Matt Connor · Na-update 2026-07-24

Ano ang port at paano ito gumagana sa Linux

Alamin ang function ng port sa network traffic. Matutunan ang paggamit ng ss command para makita ang mga active services at ang pagkakaiba ng TCP at UDP.

Ano ba talaga ang port

Ang port ay isang numero na nagpapahintulot sa isang server na magpatakbo ng maraming services nang sabay-sabay nang hindi naghahalo ang kanilang traffic. Ang iyong VPS ay may isang IP address, pero maaari itong magpatakbo ng web server, SSH server, at database nang sabay. Kapag may dumating na packet, kailangang malaman ng operating system kung para sa alin sa mga ito ang packet. Ang port number ang sagot. Ang web traffic ay pumupunta sa port 443, ang SSH sa port 22. Ang IP address ang nagdadala ng packet sa iyong server; ang port ang nagdadala nito sa tamang program sa server na iyon.

Ang port ay isang 16-bit na numero: ang 16 bits ay nagbibigay ng 0 hanggang 65535, at ang 0 ay reserved, kaya ang mga port ay tumatakbo mula 1 hanggang 65535 sa praktikal na gamit. Ang mga port na mababa sa 1024 ay ang mga "well-known" ports at nangangailangan ng root para buksan, kaya dito nakatira ang mga standard services: 22 para sa SSH, 80 para sa HTTP, 443 para sa HTTPS, 53 para sa DNS. Ang anumang lampas sa 1024 ay pwedeng gamitin ng mga ordinaryong program.

May dalawang uri, ang TCP at UDP, at ang port number sa isa ay hiwalay sa kaparehong numero sa isa pa. Ang TCP ay ang connection-based protocol na ginagamit ng karamihan sa mga services, gaya ng SSH, HTTP, at mga database. Ang UDP ay connectionless at ginagamit para sa mga bagay gaya ng DNS at ilang VPNs. Kapag nagbubukas ka ng firewall, karaniwan mong tinutukoy kung alin ang gagamitin, halimbawa ay 22/tcp.

Ang "listening" ay nangangahulugang ang isang program ay naghihintay sa isang port

Ang isang program na gustong tumanggap ng mga connection ay humihiling sa kernel na "mag-listen" sa isang port. Mula sa sandaling iyon, ang port ay bukas na sa machine at sasagutin ng program ang anumang dumating doon, depende sa firewall. Ang port na walang nag-li-listen ay simpleng tumatanggi sa mga connection. Kaya ang unang tanong sa anumang security check ay: ano ang nag-li-listen, at saan.

Ang command para sagutin iyan 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). Isang tipikal na 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

Ang column na Process ay nagsasabi kung anong program ang may-ari ng bawat port, na siyang paraan para ma-track ang mga bagay na hindi mo sinadyang iwanang tumatakbo.

Ang Local Address column ang mahalagang bahagi

Basahing mabuti ang address sa harap ng bawat port, dahil ito ang nagdedesisyon kung sino ang makakaabot sa service. May tatlong kaso na madalas mong makikita.

Ang 0.0.0.0:22 ay nangangahulugang "mag-listen sa lahat ng IPv4 address na mayroon ang machine na ito," kasama na ang public IP nito. Ang service ay maaabot mula sa internet via IPv4, kung papayagan ng firewall.

Ang [::]:80 ay pareho ang kahulugan para sa IPv6: mag-listen sa lahat ng IPv6 address, kasama ang public. Maraming program ang nagba-bind dito by default, at sa Linux, ang isang :: socket ay madalas na tumatanggap din ng IPv4.

Ang 127.0.0.1:5432 ay nangangahulugang "mag-listen sa loopback lamang." Ang 127.0.0.1 ay ang address na ginagamit ng machine para makipag-usap sa sarili nito, at hindi ito routable mula sa kahit saan. Ang isang service na naka-bind dito ay maaabot lamang mula sa parehong server, hindi kailanman mula sa internet, anuman ang sabihin ng iyong firewall. Ang Postgres line sa itaas ay ligtas dahil sa disenyo nito.

Ang praktikal na panuntunan ay malinaw dito: ang isang database, cache, o admin panel na ang sarili mong mga application lamang ang gumagamit ay dapat mag-bind sa 127.0.0.1, hindi sa 0.0.0.0. Kung hindi ito mag-li-listen sa isang public address, walang paraan para maabot ito ng isang attacker.

Ang pag-listen ay hindi kapareho ng pagiging reachable

Isang karagdagang pagkakaiba ang magliligtas sa maraming kalituhan. Ang pagiging bukas ng isang port sa machine, na nangangahulugang may program na nag-li-listen, ay iba sa pagiging reachable ng port na iyon mula sa labas, na nangangahulugang pinapayagan ito ng firewall. Parehong dapat totoo ang mga ito para makakonekta ang isang remote client.

Kaya may dalawang layer ng kontrol. Ikaw ang nagdedesisyon kung ano ang mag-li-listen sa pamamagitan ng pag-set ng bind address ng bawat service. At ikaw ang nagdedesisyon kung ano ang maaabot ng mundo sa labas gamit ang isang firewall. Ang isang maayos na pinapatakbo na server ay gumagamit ng pareho: ang mga services ay nagba-bind lamang kung saan nila kailangan, at ang firewall ay nagba-block sa lahat ng hindi mo hayagang pinayagan. Ang pagbabasa kung ano ang nag-li-listen gamit ang ss ay unang hakbang; ang pagpapasya kung ano ang pinapayagan ng firewall ay ikalawang hakbang, na tatalakayin sa firewalls 101 with UFW.

May isang detalye na nagpapahamak sa mga tao rito. Ang IPv4 at IPv6 ay magkahiwalay, at ang isang firewall na IPv4 lang ang sakop ay mag-iiwan sa mga [::] services na bukas sa IPv6. Ang partikular na bitag na iyon ay may sariling post: the IPv6 firewall trap.

FAQ

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

I-run ang sudo ss -tlnp para sa TCP o sudo ss -ulnp para sa UDP. Iisa-isa nito ang bawat listening socket, ang port, ang local address kung saan ito naka-bind, at ang process na may-ari nito. Basahin ang Local Address column: ang 0.0.0.0 o [::] ay nangangahulugang ang service ay exposed sa network, habang ang 127.0.0.1 ay nangangahulugang nakikinig lamang ito sa mismong machine.

Ano ang pagkakaiba ng 0.0.0.0 at 127.0.0.1?

Ang 0.0.0.0 ay nangangahulugang "mag-listen sa lahat ng IPv4 addresses," kasama na ang public IP, kaya ang service ay maaabot mula sa network. Ang 127.0.0.1 ay loopback, ang address na ginagamit ng machine para makipag-usap sa sarili nito, at hindi ito routable mula sa kahit saan, kaya ang isang service na naka-bind dito ay maaabot lamang nang lokal. I-bind ang mga internal services sa 127.0.0.1 para hindi sila ma-expose.

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

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

Ano ang pagkakaiba ng TCP port at UDP port?

Ang TCP ay connection-based at ginagamit ng karamihan sa mga services, gaya ng SSH, web servers, at mga database. Ang UDP ay connectionless at ginagamit ng DNS at ilang VPNs. Ang parehong numero sa TCP at UDP ay magkaibang ports, kaya ang 53/tcp at 53/udp ay magkaiba. Kapag nagsusulat ka ng mga firewall rule, tinutukoy mo ang protocol, halimbawa ay 22/tcp.