Permalänk
Medlem

Portar i router

Hej!

Försöker lära mig hur portar fungerar i en router.
Enligt min datakommunikationsbok använder sig routern av en routingtabell för att ta fram en karta över möjliga vägar. Genom denna tabell kan routern bestämma vilken länk datapaketet ska skicka (forward) till. Min fråga är om dessa länkar är samma sak som portar, och används dessa portar för att datapaket ska komma till rätt sändare? Är dom också fysiska eller logiska portar?
Fick för mig att portnummer är lite som adress för olika program, men det kan mycket väl vara fel.

Är någon sugen på att svara är jag tacksam.

Permalänk
Medlem

Routingtabellen anger vilken fysisk port (device, nätverkskort) paketet skall sändas till. De logiska portarna (portnummer) används vid NAT för att avgöra hur IP-numren skall ändras. En router har vanligtvis lika många fysiska portar som antalet anslutna nät. I en hemmarouter är routerns LAN-port ansluten till en inbyggd switch och AP.

Visa signatur

Fagerja

Permalänk
Medlem
Skrivet av eswa:

Hej!

Försöker lära mig hur portar fungerar i en router.
Enligt min datakommunikationsbok använder sig routern av en routingtabell för att ta fram en karta över möjliga vägar. Genom denna tabell kan routern bestämma vilken länk datapaketet ska skicka (forward) till. Min fråga är om dessa länkar är samma sak som portar, och används dessa portar för att datapaket ska komma till rätt sändare? Är dom också fysiska eller logiska portar?
Fick för mig att portnummer är lite som adress för olika program, men det kan mycket väl vara fel.

Är någon sugen på att svara är jag tacksam.

Svenska språket är ett fattigt språk där många ord har flera betydelser.

Ordet "port" kan i datakomsammanhang ha två helt olika betydelser:
1) en fysisk port (eng: interface) i en switch eller router. Själva "hålet" där du stoppar in en kabel, typ LAN-port 1.
2) en logisk port i ett udp/tcp paket (eng: port number). Vilket kan ses som en del av en adress för att hitta till rätt dator och program, din program nås på ip-nr xxx och tcp-port yyy (192.168.1.100:80).

Min fråga är om dessa länkar är samma sak som portar
Ja om du med "portar" menar (1) fysiska interface.

Fick för mig att portnummer är lite som adress för olika program
Ja det stämmer om du menar (2) logiska port-nummer i ett tcp/udp-paket.

Så svaret på din trådstart är inte helt enkelt, det beror helt på vad du menar med "port".

Permalänk
Medlem

Som jag förstår det är vissa portar i routern låsta för att förhindra att skadlig programvara lyckas kommunicerar. Men varför använder inte dessa program kända port nummer typ port 80. Borde det inte vara ganska lätt att använda en känd port när t.ex. ett malwareprogram skapas ?

Permalänk
Medlem

Låser portar gör man i en brandvägg inte i en ren router. En NAT-router använder portnumret för att kunna skicka inkommande paket till rätt dator. Om porten inte är associerad med en dator i det lokala nätverket så kastas paketet. Associationen kan göras med portforwardning eller automatiskt av routern när det gäller svarstrafik. Port 80 (http) är normalt endast associerad till en webbserver och det måste ske genom portforwardning. I ett normalt hemmanätverk kastas inkommande paket till port 80.

En TCP-förbindelse använder normalt 2 portar, som väljs av klienten. Den första porten är destinationsporten på servern (för HTTP port 80). Den andra porten är den, som klienten vill ha svaret på. När klienten anropar servern så ändrar routern avsändar IP-numret till sitt publika nummer och svarsportens nummer, som samtidigt associeras med klienten. När svar kommer till den av routern angivna svarsporten så byter routern svarsporten tillbaka till det nummer klienten önskat och skickar svaret vidare till klienten.

Visa signatur

Fagerja

Permalänk
Medlem
Skrivet av eswa:

Som jag förstår det är vissa portar i routern låsta för att förhindra att skadlig programvara lyckas kommunicerar. Men varför använder inte dessa program kända port nummer typ port 80. Borde det inte vara ganska lätt att använda en känd port när t.ex. ett malwareprogram skapas ?

Anledningen till att vanliga portar (inkommande) inte används är att det är så enkelt att upptäcka, samt att chansen är hög att en webserver redan körs på porten.
Om du menar utgående så används port 80 flitigt bland malware.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6

Permalänk
Medlem
Skrivet av fagerja:

Låser portar gör man i en brandvägg inte i en ren router. En NAT-router använder portnumret för att kunna skicka inkommande paket till rätt dator. Om porten inte är associerad med en dator i det lokala nätverket så kastas paketet. Associationen kan göras med portforwardning eller automatiskt av routern när det gäller svarstrafik. Port 80 (http) är normalt endast associerad till en webbserver och det måste ske genom portforwardning. I ett normalt hemmanätverk kastas inkommande paket till port 80.

En TCP-förbindelse använder normalt 2 portar, som väljs av klienten. Den första porten är destinationsporten på servern (för HTTP port 80). Den andra porten är den, som klienten vill ha svaret på. När klienten anropar servern så ändrar routern avsändar IP-numret till sitt publika nummer och svarsportens nummer, som samtidigt associeras med klienten. När svar kommer till den av routern angivna svarsporten så byter routern svarsporten tillbaka till det nummer klienten önskat och skickar svaret vidare till klienten.

Fattar inte vad du menar med "Associationen kan göras med portforwardning eller automatiskt av routern när det gäller svarstrafik. Port 80 (http) är normalt endast associerad till en webbserver och det måste ske genom portforwardning. I ett normalt hemmanätverk kastas inkommande paket till port 80."
Menar du att inkommande paket med mottagarport 80 och sändarport xxx kastas, eller att paket som kommer att kastas går till port 80? Även att port 80 normalt endast används till webbserver, borde inte andra program typ tojan kunna använda denna port?

För att lättare förklara för mig kan jag beskriva vad jag vet: datapaket skickas med ip-nr för sändare och mottagare, detta gäller även för port nummer. Routern ändrar ip-nr till ett public ip och ändrar även port-nr för sändare, men port-nr för mottagare är samma, typ port 80. Servern svarar med att skicka ett paket tillbaka. Eftersom alla datorer i mitt nätverk har samma public ip vet routern vad paketet ska skickas genom port numret som användes när jag skickade mitt paket från första början, innan det ändrades. Enligt min beskrivning borde inte ett skadligt program har några problem att kommunicera över samma port, typ port 80. I alla fall om skadliga programvaran finns på min dator och skickar ett paket med ip adress och port 80 till en dålig server. För port 80 är väl inte bundet till en viss ip?

Permalänk
Medlem
Skrivet av eswa:

Som jag förstår det är vissa portar i routern låsta för att förhindra att skadlig programvara lyckas kommunicerar. Men varför använder inte dessa program kända port nummer typ port 80. Borde det inte vara ganska lätt att använda en känd port när t.ex. ett malwareprogram skapas ?

Det är väl sällan portar är låsta i en router?
I en riktig router är de definitivt inte låsta eftersom routern endast jobbar på ip-nivå.
Och i en "bredbandsrouter" så går det väl att göra en port-forward på alla portar?

Och i sammanhanget är det viktigt att komma ihåg att det måste finnas en dator som lyssnar på porten.
Och dessutom ska programvaran ha någon form av sårbarhet som kan utnyttjas.
Så det räcker inte att skicka paket till port 80, du måste dessutom ha en web-server igång samt att den har någon form av sårbarhet som kan utnyttjas.

Permalänk
Medlem
Skrivet av madtop:

Det är väl sällan portar är låsta i en router?
I en riktig router är de definitivt inte låsta eftersom routern endast jobbar på ip-nivå.
Och i en "bredbandsrouter" så går det väl att göra en port-forward på alla portar?

Och i sammanhanget är det viktigt att komma ihåg att det måste finnas en dator som lyssnar på porten.
Och dessutom ska programvaran ha någon form av sårbarhet som kan utnyttjas.
Så det räcker inte att skicka paket till port 80, du måste dessutom ha en web-server igång samt att den har någon form av sårbarhet som kan utnyttjas.

Låsta portar kanske är fel ord, portar som inte går att kommunicera över kanske är bättre.

Är portar bundet till en viss applikation? Tänkte eftersom port-nr hanteras i transportprotokollet borde vilken som helst applikation kunna använda vilket portnummer den vill ? Säg att jag har ett spel igång där jag under ett tillfälle är server, borde inte det programmet kunna kommunicera över port 80 då. Eller är det endast web-server som kan använda port 80?

Permalänk
Medlem
Skrivet av eswa:

Låsta portar kanske är fel ord, portar som inte går att kommunicera över kanske är bättre.

Stängda, öppna eller dolda är termer man brukar använda.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6

Permalänk
Medlem

Känner att jag nog får läsa lite mer i min bok. Men kort sagt kan man nog säga att portforwarding är endast viktigt när man har en server på sitt lokala nätverk som ska kunna nås av yttre nätverk. Har dock svårt att förstå vilken port jag forward till vid t.ex. port område 80 till 80, översätt till 80 - 80 protokoll tcp. Innebär detta att paket med mottagar port 80 kommer skickas till min dator? Just denna port används i battlefield 3, kan det inte då bli krock om jag har fler än en server som använder samma port? Säg att jag vill ha två stycken web-server på samma lokala nät.

Permalänk
Medlem
Skrivet av eswa:

Låsta portar kanske är fel ord, portar som inte går att kommunicera över kanske är bättre.

Är portar bundet till en viss applikation? Tänkte eftersom port-nr hanteras i transportprotokollet borde vilken som helst applikation kunna använda vilket portnummer den vill ? Säg att jag har ett spel igång där jag under ett tillfälle är server, borde inte det programmet kunna kommunicera över port 80 då. Eller är det endast web-server som kan använda port 80?

Ja, om man vill följa standard så är portar låsta till en applikation.
80 = http-server, 443 = https, 25 = smtp, 161 = snmp osv...
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Men visst, det finns inga tekniska hinder för mig att konfa en web-server som lyssnar på port 25.
Och en mail-server som lyssnar på port 23.

Men det känns bara dumt och krångligt. Den flesta applikationer (tex din browser) förutsätter att du använder en standard-port. Vad är enklast att skriva in i din browser
http://mindomän.se
eller
http://mindomän.se:25

Permalänk
Medlem
Skrivet av eswa:

Känner att jag nog får läsa lite mer i min bok. Men kort sagt kan man nog säga att portforwarding är endast viktigt när man har en server på sitt lokala nätverk som ska kunna nås av yttre nätverk. Har dock svårt att förstå vilken port jag forward till vid t.ex. port område 80 till 80, översätt till 80 - 80 protokoll tcp. Innebär detta att paket med mottagar port 80 kommer skickas till min dator? Just denna port används i battlefield 3, kan det inte då bli krock om jag har fler än en server som använder samma port? Säg att jag vill ha två stycken web-server på samma lokala nät.

Ja, portforward behövs endast om din "server" sitter bakom en NAT och att du vill att den ska vara nåbar från internet.

Och ja, du kan endast adressera en (1) dator med en port.
min_publika_ip:80 kan endast skickas vidare till en enda dator bakom din NAT.

Men du kan ha två web-servrar på samma lokala nät, men du måste adressera dem olika från internet.
I en browser på internet är du tvungen att skriva olika URL:er (olika portnummer)
http://min_domän.se -> dator1:80
http://min_domän.se:808 -> dator2:80

Observera att i det sista exemplet så har du fortfarande en server som lyssnar på port 80.
Men din "port-forward" regel i din NAT säger att du ska översätta port 808 till 80.

Permalänk
Medlem
Skrivet av madtop:

Ja, om man vill följa standard så är portar låsta till en applikation.
80 = http-server, 443 = https, 25 = smtp, 161 = snmp osv...
http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers

Men visst, det finns inga tekniska hinder för mig att konfa en web-server som lyssnar på port 25.
Och en mail-server som lyssnar på port 23.

Men det känns bara dumt och krångligt. Den flesta applikationer (tex din browser) förutsätter att du använder en standard-port. Vad är enklast att skriva in i din browser
http://mindomän.se
eller
http://mindomän.se:25

Tack för svar.

Säg att jag har en webserver och inte vill använda port 80, hur ändrar jag isf det ? Kommer inte inkommande trafik fortfarande försöka nå min server på port 80? Då borde ju ingen kunna hitta till min server.

Permalänk
Medlem

Och så skriver jag ett inlägg till (jaja, jag har inget annat för mig på en fredagskväll )

Dina "port-forward" regler i din NAT handlar inte om något annat än en tabell med regler där man översätter mellan publik_ip:publik_port till privat_ip:privat_port

publik_ip:80 -> dator1:80
publik_ip:23 -> dator1:23
publik_ip:81 -> dator2:80
publik_ip:xyz -> datorNNN:zxy

Permalänk
Medlem
Skrivet av eswa:

Tack för svar.

Säg att jag har en webserver och inte vill använda port 80, hur ändrar jag isf det ? Kommer inte inkommande trafik fortfarande försöka nå min server på port 80? Då borde ju ingen kunna hitta till min server.

I din web-servers konfiguration kan du ställa in att den ska lyssna på en annan port.

Och det finns två sätt att lösa försöka nå min server på port 80
1) Ska en regel i din NAT som översätter från publik_ip:80 till private_ip:XXX
(känns dock meningslöst. Varför vill du göra det?)
2) Tala om för alla som vill komma åt din server att den lyssnar på port XXX.
Dvs de måste adressera den med http://publik_ip::XXX

Permalänk
Medlem
Skrivet av madtop:

I din web-servers konfiguration kan du ställa in att den ska lyssna på en annan port.

Och det finns två sätt att lösa försöka nå min server på port 80
1) Ska en regel i din NAT som översätter från publik_ip:80 till private_ip:XXX
(känns dock meningslöst. Varför vill du göra det?)
2) Tala om för alla som vill komma åt din server att den lyssnar på port XXX.
Dvs de måste adressera den med http://publik_ip::XXX

Ska inte göra det, vill bara förstå lite mer hur det fungerar. Har behövt port forward några gånger men aldrig fattat varför, men tror jag har bättre koll nu.
Är också nyfiken på varför man blir sårbar om man har många portar "öppna". Som jag förstår det är man alltid sårbar om program redan finns på min dator som försöker nå en server för att t.ex. tar hem mer malware, men har man många portar "stängda" kan inte klienter utifrån försöka nå min dator för att skicka skadlig kod, då dessa paket oftast slängs.

Vad händer om man har fler applikationer som vill kommunicera på samma port, borde bli helt knäppt ? Typ två spel som använder samma portar.

Permalänk
Medlem
Skrivet av eswa:

Ska inte göra det, vill bara förstå lite mer hur det fungerar. Har behövt port forward några gånger men aldrig fattat varför, men tror jag har bättre koll nu.
Är också nyfiken på varför man blir sårbar om man har många portar "öppna". Som jag förstår det är man alltid sårbar om program redan finns på min dator som försöker nå en server för att t.ex. tar hem mer malware, men har man många portar "stängda" kan inte klienter utifrån försöka nå min dator för att skicka skadlig kod, då dessa paket oftast slängs.

Vad händer om man har fler applikationer som vill kommunicera på samma port, borde bli helt knäppt ? Typ två spel som använder samma portar.

Du blir inte sårbar bara för att du har en massa port-forward - du måste samtidigt ha igång ett program som lyssnar på porten. Om du har en dator INTE lyssnar på portarna XXX-YYY är det helt ofarligt att göra en port-forward på dessa portar.

Anledningen till att man inte ska ha massa portar öppna i onödan är för att man inte alltid har koll på vad som är igång på datorn.

Det går inte att ha två applikationer igång som lyssnar på samma port. OS:et ser till att det endast är en applikation i tagen som använder en port, om en applikation försöker öppna en redan upptagen port så får den helt enkelt ett felmeddelande från operativsystemet.