Service - Sende DNS info fra server til server

Tags:    linux

<< < 12 > >>
Hey.

Sidder og er igang med at lave et større netværk af computere, heri skal jeg så have min main server (Den som min ydre ip pejer ind på), til at peje på en af de andre servere i "huset".

Begge servere sidder på samme LAN.

Så hvis main serveren har ip 192.168.1.150 og den anden server har 192.168.1.151 og skal have indholdet http://tuxa.dk hvad skal jeg så bruge? Tænker først DNS, men, syntes ikke liiiiige jeg kan finde noget der beskriver dette her emne som jeg sidder med.

Idé'en er at den ene server (Main serveren) skal lege FTP Host til brugerne i "huset", og den secondary server skal være http Host..

Og hvad nu hvis vi en dag skal bruge en 3'e server i "huset"? Hvad skal vi så gøre, det er vel main serveren der skal lege DNS all the way?

25 Point til den der kan lead the way eller vise hvordan jeg skal gøre.

Køre iøvrigt Debian (AMD64 = 64Bit system), v.4 eller v.5 (Husker ikke hvilken pt.)



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
IP, TCP og DNS er forskellige ting, og kan ikke bage blandes sammen.

Hvis din router skal forwarde på baggrund af IP, så skal du have to forskellige offentlige IP-adresser.

Hvis din router skal forwarde på baggrund af TCP, så skal dine servere bruge forskellige porte. Så hvis den ene bruger port 80 (HTTP) så kan den anden ikke bruge samme port.

Hvis din router skal forwarde på baggrund af DNS, så kræver det, at routeren kan finde det domænenavn, som forbindelsen var tiltænkt. Men den information findes ikke længere, når forbindelsen bliver oprettet. Forbindelsen oprettes til en IP-adresse og en TCP port.

I visse tilfælde kan du dog gøre noget smart med DNS, et af tilfældene er HTTP. En HTTP request ser fx sådan ud:

GET /index.html HTTP/1.1
Host: tuxa.dk
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; da; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: da,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0

En router, som kender til HTTP, kan finde "Host:"-headeren i requestet og forwarde requestet på baggrund af denne. Det kan en almindelig hjemme-router ikke, da det kræver at den dykker ned i HTTP-protokollen og kigger der.

Man kan sagtens købe HTTP-specifikke routere til at gøre dette. En del store hjemmesider bruger det blandt andet til i stedet at kigge på "Cookie"-headeren for at forwarde til den maskine i serverparken, hvor brugerens session er aktiv.

En anden måde vil være at bruge en af dine servere til at agere router. Der findes garanteret et Apache-modul eller lignende, som er til at finde ud af. Herved dirigeres al trafikken til en bestemt server, som så sender trafikken videre, hvis den ikke selv kan behandle den.

Men dette trick gælder specifikt for HTTP. Hvis du ser på FTP, så har den ikke noget lignende "Host:"-headeren fra HTTP, og routeren kan derved på ingen måde finde ud af hvilket DNS domænenavn forbindelsen var tiltænkt. Men hvis systemet skal bruges til hosting af hjemmesider med redigering via FTP, vil det måske være mere acceptabelt at have FTP-serveren på en ikke-standard port i forhold til HTTP-serveren.



Det skal lige siges at min router er altså ikke særlig advanceret til disse opgaver - ENDNU, har planer om at købe en small buisness CISCO Router senere hen, så vi kan koble flere maskiner på netværket.



DNS'en på tuxa.dk skal ikke pege på nogen af de to IP'er, da de begge er lokale. Du siger du kun har en offentlig IP. Du kunne så vælge at købe en ekstra hos internetudbyderen og sætte denne op som IP for din anden maskine.

Ellers kan du sætte maskinerne op på to forskellige porte, sætte din router til at have IP'en udadtil og så bruge NAT i routeren til at forwarde portene til de forskellige servere. Men hvis begge maskiner skal være server på samme protokol, fx HTTP, så kræver det jo at en af dem bruger en ikke-standard port, fx http://tuxa.dk:8080.

En sidste mulighed er at sætte maskinen, som IP'en pejer på op til at forwarde indholdet, men det kræver at den kender de protokoller den skal forwarde for, og det kræver at protokollerne understøtter dette. Det gør HTTP blandt andet, men FTP gør ikke.



Hej Jesper.

Så er spørgsmålet ændret da jeg kan se det jeg havde i tankerne ikke kan lade sig gøre.

Meningen er at jeg gerne vil hoste mere end 1 server som deler forbindelsen, lige imellem dem, dette havde vi håbet på at klare med en router.

Vi vil helst gerne undgå at betale en ip adresse mere, så er det lettere at holde styr på hvis vi kun har 1 adresse ind som deler vores forbindelse.

Så idé'en var at sætte dns'en op så den forwarded alle porte til en anden server hvis den spurgte på et specifikt domain.

Dvs. Port 21, 22, 25 og 80 over til lan ip 192.168.1.150 hvis den spørger efter domainet abc123.dk, og hvis den spørger efter tuxa.dk skal den sende de samme porte til lan ip 192.168.1.151

Men, det kan man måske ikke? Eller sidder jeg med det samme spørgsmål som sidst? Er en smule forvirret her til aften, har siddet og læst en masse forskellige artikler for at finde en løsning på problemet.



Hej Jesper.

Havde helt glemt den her tråd.
Men, nu sidder jeg og arbejder lidt på noget af det her emne.

Jeg har sat nogle VPS'er op, og så sidder jeg med nogle problemer, som vedrører lidt det her emne.

Lad os sige min ydre ip er:
80.100.123.11 (fx)
og min router på indersiden hedder 192.168.1.1 og jeg har 50 indre pladser til rådighed, som jeg har valgt skal være fra 192.168.1.100 til 192.168.1.150
Min server fik så plads 100, og jeg har sat en VPS op til at have plads 101

Kan jeg så få min server på plads 100 til at sende alle port informationer videre til min VPS?

Altså, alle domains rammer på min ydre ip, men, så når de rammer min server (Som jeg har sat min router til, så skal den lokalisere min VPS, og ramme de specifike porte, fx, 80, 21, 22 og 25, så min VPS bruger kan logge på de forskellige ting og ændre sit VPS area..

Håber du forstår :)



Hvis den virtuelle server er direkte på samme IP-netværk som den fysiske, hvilket det lyder som om, så kan du vel bare sætte routeren til direkte at forwarde portene til ...101 i stedet for ...100.



Tror jeg beskrev problemet forkert :)

Jeg vil have port 80, 21, 22 og 25 til at ramme på mere end 1 ip adresse, afhænning af hvilket domain man sætter på den ydre ip.

:)



Så skal du på samme måde som før sørge for at domænet er inkluderet et eller andet sted i den data der transmitteres, og da domænet hverken ses i IP- eller TCP-laget, skal det være i applikationslaget. HTTP sender domænet med (Via HTTP Host-headeren), men andre protokoller som fx FTP gør ikke.

Du skal så have en router (hvor ordet "router" er ment i abstrakt forstand, hvilket i dit tilfælde sandsynligvis er serveren med IP ...100) der kan fortolke den pågældende applikationslagsprotokol og videresende forbindelsen til den rigtige IP.

Sagt på en anden måde: Hvis du vil have en ydre IP til at dække flere lokale IP'er, skal du have en NAT. I din Router-hardware har du en "TCP-port-NAT", som kan videresende på baggrund af portnumre. Du kan også bruge en "HTTP-domæne-NAT" (aka. HTTP Proxy) til at videresende HTTP-forbindelser på baggrund af domænenavn. Men man kan ikke lave en "FTP-domæne-NAT", da FTP-protokollen ikke indeholder information om domænet. En NAT skal altså arbejde på en eller anden protokol (fx TCP), og den kan kun filtrere på baggrund af information, som findes i protokollen (fx portnummer).

I tilfældet af FTP har du to protokoller, som ligger over IP-protokollen. De er TCP og FTP, og ingen af dem indeholder information om domænenavn, så de kan ikke filtræres på baggrund af domænenavn.



Indlæg senest redigeret d. 24.05.2010 18:18 af Bruger #3143
Hej Jesper.

Så hvis jeg forstår dig rigtigt, skal jeg næsten hen og have fat i en router? I så fald, hvilken router anbefaler du til Jobet?



Det kommer lidt an på hvad du vil. Nu nævner du port 80, 21, 22 og 25.

Normalt er det HTTP man kører over port 80. En "HTTP router", hedder også en "http proxy". Jeg har ikke nogen konkrete anbefalinger, men du kan jo søge på nettet efter fx "HTTP proxy software".

Normalt er det FTP man kører over port 21. For FTP er der som jeg sagde intet sted hvor man kan finde domænenavnet, så det er altså ikke muligt at route på baggrund af domæne med FTP.

Normalt er det SSH og SMTP man kører over port 22 og 25. Jeg kan ikke huske disse protokoller så godt til at vide om man kan route dem på samme måde. Jeg vil tro man kan gøre det med SMTP, men med SSH har jeg ingen anelse om det er muligt.



<< < 12 > >>
t