IP Adres beschikbaar maken op andere server

Pagina: 1
Acties:

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Situatieschets:

Server 1:
IP: 1.1.1.1
IP: 1.1.1.2
IP: 1.1.1.3

Server 2:
IP 2.1.1.1


Nu wil ik vanaf server 2 ook gebruik kunnen maken van de IP's van server 1 als virtual host voor een applicatie. Nu heb ik zitten denken aan een soortvan NAT te draaien op die server1, echter ik moet op server2 dan ook een soort 2e gateway hebben voor die applicaties, dat gaat natuurlijk niet aangezien ik via die IP adressen bij heel het internet wil kunnen komen.
Het moet voor server2 eigenlijk net zijn alsof die IP adressen van hemzelf zijn, alleen de in-use poorten kunnen niet worden gebruikt (die al door server1 in gebruik zijn).

Bestaat hier een hele simpele manier voor via een leuk programma oid? Of hebben jullie tips ivm IPtables regels? Het lijkt me dat ik niet de enige ben die dit zou willen, maar zie maar eens een beschrijving als dit door google te halen... Ik ben benieuwd!

edit:
OS: Linux 2.6 debian testing.

[ Voor 3% gewijzigd door pierre-oord op 24-04-2006 12:25 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Ik snap het probleem niet. Je kunt toch gebruik maken van portforwarding?

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

socket delen over nfs?

geen idee of het kan btw.
maar inderdaad portforwarding kan prima :)

Zaram module kopen voor je glasvezelaansluiting?


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Portforwarding gaat wel, maar alleen voor inkomende connecties. Namelijk, ik wil dat een programma die connecties *opzet* via een bepaalde vhost gaat. Dus vanaf de server!

Dat kan het programma alleen door een bron-ip in te stellen zegmaar, een IP die op die machine bestaat. Ik moet dus eigenlijk wel het programma aan een ander IP laten binden, óf ik zou hem aan een bekend IP moeten binden maar dat ik alles wat vanaf dat IP wordt gestuurd, doorstuur naar een andere server.

Dat laatste kan denk ik wel, maar ik weet niet of ik ook een soort virtuele interface kan aanmaken met een bestaand programma?

edit:
Ik werk niet via sockets, dus dat zal niet lukken... sowieso komen er geen connecties uit een socket, maar gaan die erin :) toch

[ Voor 11% gewijzigd door pierre-oord op 22-04-2006 18:29 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

Je wil dus dat alle verbindingen van een bepaald programma altijd via Server 1 naar buiten gaan? Ja? Dit klinkt nogal lastig. Een programma maakt namelijk een verbinding met een bepaalde externe server en de kernel kiest aan de hand van het destination IP (en niets anders) een geschikte gateway en interface om de destination te kunnen bereiken. M.a.w. het is nogal lastig om voor programma A een andere route te nemen dan voor programma B (en alle andere programma's).

Wat mogelijk kan werken is het maken van een iptable rule en matchen on de owner van een pakket (gebruikers id of group id). Je laat het programma dus draaien onder een speciaal useraccount en laat de kernel voor die specifieke user uitzonderingen maken voor het routeren van pakketten.

Ik heb geen idee of dit ooit kan werken, maar ik heb alvast even voor je meegedacht.
Let op de volgende dingen:
* Owner match support staat aan (<*> of <m>) in iptables configuratie
* Je laat de applicatie draaien onder een specifiek / uniek account
* Je maakt een iptables rule aan voor dit account op Server 2 (matchen op owner)
* Server 1 moet bereid zijn deze pakketten (correct) te routeren

edit:
Om te debuggen:

code:
1
/sbin/iptables -A OUTPUT -m owner --gid-owner mijnspecialegroepid -j LOG --log-prefix=ELLENDE

[ Voor 8% gewijzigd door irondog op 22-04-2006 20:54 ]

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Wat jij zegt irondog, zoiets ben ik wel van plan te gaan proberen, maar omdat ik het programma van verschillende vhosts gebruik wil laten maken, ga ik waarschijnlijk het programma laten luisteren op bijvoorbeeld interne IP adressen, en alles via dat adres naar buiten wil, naar een andere gateway laten lopen ofzo... maar 't blijft lastig.

Eigenlijk moet ik gewoon extra interfaces hebben op die machine dat is het simpelste, en dan klein programma op de server1. Ik ga nog ff zoeken en hoop dat iemand misschien dé tip heeft ;)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Dit zou wel mogelijk moeten zijn met iptables alleen vraag ik me af of er een nette manier is om de eigen poorten er automatisch uit te laten filteren.

Met een regeltje als dit zou je een poort wel kunnen laten doorsturen: iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 1.1.1.1:80

Maar of dat echt is wat je zoekt :/

Blog [Stackoverflow] [LinkedIn]


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
ik denk dus dat als ik doe wat jij zegt wolfboy ongeveer, maar dan met sport of dport: die ken ik dus niet :/... alleen vraag ik me af of een machine dit zomaar pikt.. magoed ik ga iig daar mee aan de gang. Ik vroeg me af of het simpeler kon :)

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


  • irondog
  • Registratie: Januari 2001
  • Laatst online: 11-05-2025

irondog

alle dingen moeten onzin zijn

pierre-oord schreef op zaterdag 22 april 2006 @ 20:53:
Wat jij zegt irondog, zoiets ben ik wel van plan te gaan proberen,[...]
Tja. Je kunt een dummy interface op Server2 maken met een IP dat Server1 ook heeft. Ik denk dat je daar ook niet echt gelukkig van wordt en ik zie er het nut er op voorhand totaal niet van in.
maar omdat ik het programma van verschillende vhosts gebruik wil laten maken, ga ik waarschijnlijk het programma laten luisteren op bijvoorbeeld interne IP adressen, en alles via dat adres naar buiten wil, naar een andere gateway laten lopen ofzo... maar 't blijft lastig.
Realiseer je je wel dat als je luistert op een TCP poort dat deze algemeen toegankelijk wordt? Een server bindt zijn poort dus niet aan een speciek IP adres. Een poort waarop geluisterd wordt, is gewoon algemeen toegankelijk en zeker niet slechts voor één van de aanwezige IP adressen of NICs.

Misschien is het gebruik van een simpele SSL tunnel nog wel het makkelijkste.
Met een regeltje als dit zou je een poort wel kunnen laten doorsturen: iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 1.1.1.1:80
Dat is weer niet applicatie specifiek. Naja. Mijn laatste idee uiteraard ook niet.

[ Voor 28% gewijzigd door irondog op 22-04-2006 21:17 ]

[P5B deluxe] [Core2Duo 6300] [2 X 1GB DDR2] [GF FX7300] [320 GB WD] [Gentoo] [VISTA]


Verwijderd

Installeer Plan 9 en import de TCP stack van die andere PC.

  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
@irondog:
Tuurlijk kan ik wel binden aan een IP? Ook aan allemaal met 0.0.0.0, maar ook wel degelijk los hoor.

@Nem0: Plan 9 is een ander OS zie ik op google. Bedankt voor je serieuze reactie :/

edit:
Ik heb me even kort over IPtables gebogen.

Echter, om vanaf server2>server1 te gaan, moet ik bij server2 gaat machen op een IP adres waaraan m'n applicatie zich kan binden. Een intern IP dus wel te verstaan. 192.168.0.1 bijvoorbeeld. De externe machine moet dan echter óók zo'n intern IP hebben, als ik via die 192.168.0.1 náár een externe server wil gaan. En, dat gaat natuurlijk niet over het grote boze internet. En dat wil ik eigenlijk wel...

Trouwens, misschien kan het ook wel, vanaf zo'n interne interface. Dan moet ik op server2 matchen op -s 192.168.0.1, dan die data sturen over het externe IP adres van die server naar server1, en als server1 data krijgt vanaf die server2, dan moet server 1 dat met NAT over het internet routen.

Sjee, dat gaat wel paar dagen duren met mijn iptables kennis :P als het al kan...

[ Voor 69% gewijzigd door pierre-oord op 22-04-2006 22:34 ]

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)


Verwijderd

pierre-oord schreef op zaterdag 22 april 2006 @ 22:07:
@Nem0: Plan 9 is een ander OS zie ik op google. Bedankt voor je serieuze reactie :/
Misschien dat je dan in je openingspost wilt melden om welk OS het gaat? Of betekent Non-Windows altijd Linux?

  • Flying_Thunder
  • Registratie: December 2001
  • Niet online
Verwijderd schreef op zondag 23 april 2006 @ 12:07:
[...]


Misschien dat je dan in je openingspost wilt melden om welk OS het gaat? Of betekent Non-Windows altijd Linux?
Hij noemt in z'n topicstart toch IPTables :)

Verwijderd

Ik heb niet de gehele thread gevolgd.

Maar kun je geen proxy gebruiken, zoals Squid, dan laat je je interne server verbinding maken via de proxy op de externe server.

Als het de andere kant op moet, zou je ook een reverse proxy kunnen gebruiken, geen ervaring mee.

[ Voor 24% gewijzigd door Verwijderd op 23-04-2006 18:31 ]


Verwijderd

Precies.... mijn idee..... kan apache ook.... zie http://www.mrleejohn.nl/reverseproxy.htm

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Zet het IP-adres van server1 dat je wilt gebruiken op de localhost interface van server2 (ip addr add), gooi (eerst!) deze twee sysctl's ertegenaan:
code:
1
2
3
4
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.eth0.arp_ignore = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2


En regel op server1 dat verkeer terug naar die server doorgestuurd wordt. (IPTables)

Waarom je dit in godesnaam zou willen is totaal beyond me, maar ik zie niet waarom 't niet (met wat gezeur enzo) zou kunnen.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • pierre-oord
  • Registratie: April 2002
  • Laatst online: 15-01 10:55
Een apache proxy is denk ik niet de oplossing, de applicatie ondersteund geen proxy's om aan te binden, en al helemaal geen HTTP...

@CyBeR:
Het klinkt alsof ik ARP packets ga negeren, op alle interfaces.. is dat niet fout? even uitzoeken wat deze commando's precies doen, en testen op een testbakje. Het lijkt alsof ik als het ware een IP instel op die machine en dat Linux gewoon geen check meer doet om te zien of het IP al bestaat en ik neem aan dat die ook geen conflicten kan gaan maken met andere machines door het negeren van ARP packets. Echter, op m'n normale interfaces wil ik toch nog wel ARP's kunnen krijgen neem ik aan???

Ik zal even een uitleg geven waarom ik dit precies wil, misschein dat je het dan nog wat interessanter vind:
Voor een IRC gebaseerde applicatie heb ik een aantal verschillende bron-ip adressen nodig. Om geen IP's te verspillen, laat ik die applicatie graag gebruik maken van IP's van andere servers, die (nog) niet voor die dienst worden gebruikt. Zo houd ik het tekort aan IPv4 wat langer tegen...

Ik ga nog even hard zoeken wat wat experimenteren, ik moet voor bovenstaande enge dingen toch even een testmachine gaan opzetten. Bij IPtables zag ik al een regel -j ROUTE --gw ip.of.gate.way waarmee ik alles vanaf dat "virtuele echte ip" naar die andere gateway kan sturen, denk ik... en die gateway hoeft dan alleen nog maar NAT te kunnen doen.

Ondernemer in tech (oud LOQED.com, nu UpToMore.com)

Pagina: 1