met Linux 2e IP routen/masqueraden

Pagina: 1
Acties:

  • m-m
  • Registratie: Augustus 2001
  • Niet online
Ik heb vandaag een 2e @home IP aangevraagd, ik had x.y.z.73 en heb er nu x.y.z.176 bij.
De oude situatie was als volgt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
    --------------------     --------------------
    |WS1: 192.168.45.15 |   |WS2: 192.168.45.16|
    ---------------------   --------------------
         |              |
          ------------------------
                 | 
              -------------------
              |192.168.45.12/eth1|
              | | (ipmasq)  |
              | \/       |
              | x.y.z.73/eth0    |
              --------------------

vrij standaard dus, maar nu wil ik graag dat al het verkeer van 192.168.45.15 naar het internet over x.y.z.176 gaat (eth0:0). Daarvoor dacht ik ipchains -A forward -i eth0:0 -s 192.168.45.15 -j MASQ te kunnen doen, maar helaas werkt dat niet over een gealiasde interface.
Welnu, iemand kwam met de suggestie eth0 en 1 te bridgen en dan .15 gewoon in te stellen als x.y.z.176. Dit is op zich een goede mogelijkheid maar daarvoor moet ik mn kernel hercompilen (ik denk niet dat ik bridgesupport heb) en het is slecht voor de security (beide workstations zijn windowsbakken). Zijn er nog andere mogelijkheden? Zelf dacht ik eraan om een manier te zoeken om van eth0:0 een virtuele andere interface te maken oid zodat het wel kan. (Lokale tunnel). Ik heb echt geen enkel idee.
Bij voorbaat zeer grote dank voor iemand die de oplossing weet. (Diegene outsmarts dan trouwens een aantal werknemers bij een tweetal grote nederlandse hosters die ik het op IRC gevraagd heb.. altijd leuk :D)

Verwijderd

Ik heb onderstaande nog nooit geprobeerd, omdat ik geen 2 IP's heb, maar als ik er over nadenk, dan lijkt mij dat het op de volgende manier moet werken.

Maak gewoon een alias aan voor de externe interface (zoals je gedaan hebt).

Nu ga je verkeer masqueraden zoals je al deed.
Voor WS1:
code:
1
ipchains -A forward -i eth0:0 -s 192.168.45.15/32 -j MASQ

en voor WS2:
code:
1
ipchains -A forward -i eth0 -s 192.168.45.16/32 -j MASQ

Okee nu wordt verkeer van beide clients gemasqueraded.
Probleem is echter dat altijd hetzelfde externe IP-adres gebruikt gaat worden nu. Want je hebt maar 1 default route naar inet waarschijnlijk.
Al heb je 2 routes dan nog wordt er maar 1 gebruikt (er is er maar 1 de default route).
Ik gok ook dat 1 verbinding (die over eth0:0) nu dus ook niks zal doen of wel?.

We gaan dus even routes aanmaken om op basis van de src te routeren over de juiste externe interface (eth0 resp eth0:0).

Hiervoor is er een prachtige Advanced-Routing HOWTO ;)
Voor het onderstaande heb je dus wel iproute2 nodig.

We gaan 2 regels aanmaken voor de verschillende clients.
Dit doe je in /etc/iproute2/rt_tables:
code:
1
2
echo 201 WS1 >> /etc/iproute2/rt_tables
echo 202 WS2 >> /etc/iproute2/rt_tables

Nu nog op gaan geven welke tabel door welke client gebruikt moet worden:
code:
1
2
ip rule add from 192.168.45.15 table WS1
ip rule add from 192.168.45.16 table WS2

"ip rule ls" moet nu het volgende geven als het goed is:
code:
1
2
3
4
5
0:  from all lookup local
32764:  from 192.168.45.16 lookup WS2
32765:  from 192.168.45.15 lookup WS1
32766:  from all lookup main
32767:  from all lookup default

Vervolgende gaan we de rules ook verbinden aan hun respectievelijke IP's en interfaces:
code:
1
2
ip route add default via x.y.z.176 dev eth0:0 table WS1
ip route add default via x.y.z.73 dev eth0 table WS2

Even de route tabel flushen en hij zou moeten werken.
code:
1
ip route flush cache

Ofwel het verkeer van de 2 clients wordt nu over de juiste interface naar buiten geroute. :)

Laat me even weten of bovenstaande werkt, aangezien ik het in de toekomst waarschijnlijk ook nodig heb en ik geen zin had om het hier lokaal te gaan testen op een machine ;)

[edit]
Als het werkt (ben benieuwd of het lukt met ge-aliaste interfaces), doe je dan een goed woordje voor me bij die hosters >:) ;)

  • m-m
  • Registratie: Augustus 2001
  • Niet online
Op donderdag 29 november 2001 23:10 schreef nelske het volgende:Nu ga je verkeer masqueraden zoals je al deed.
Voor WS1:
code:
1
ipchains -A forward -i eth0:0 -s 192.168.45.15/32 -j MASQ
hier gaat het helaas al mis:
Warning: wierd character in interface `eth0:0' (No aliases, :, ! or *D.
ten eerste, thnx voor het typen van die enorme lap tekst :)
misschien dat iptables oid het wel snapt, * m-m overweegt dus maar ff ('ff' ja.. kernel compilen duurt niet zo lang op een 486DX2 :z) om naar 2.4 over te stappen, misschien dat die het wel snapt met jouw iproute2 suggesties.

  • m-m
  • Registratie: Augustus 2001
  • Niet online
*een beschaafd schopje*

kan iemand me 'garanderen' dat het met 2.4 werkt? Dan wil ik nl. wel upgraden, heb alleen geen zin om het misschien tevergeefs te doen.

Verwijderd

Ik heb zoiets werkend gehad. Twee clients en 1 server met 3 nics en 2 externe ip's. Op basis van network heb ik met iptables pakketjes gemarkeerd en die op de door nelske beschreven wijze naar een aparte routing tabel laten verwijzen met daarin de default gateway . Dat heeft gewerkt tot het moment dat ik een extra oude pc kreeg en die als 2e gateway heb ingericht.
Het meeste werk was toen nog wel het maken/aanpassen van een firewall script, de standaard scripts ondersteunen veelal slechts 1 externe ip.

  • m-m
  • Registratie: Augustus 2001
  • Niet online
maar dan zal ik dus een hub aan mn kabelmodem moeten hangen en een extra NIC in mn gateway doen, beetje overkill vind ik

misschien met een SOCKS-server, maar dat zuigt wel erg zwaar

Verwijderd

Dat heb ik inderdaad wel een hub aan mijn kabelmodem. Die had ik toch nog over toen ik een switch had gekocht. Maar of dat met aliases werkt weet ik niet. Markeren van pakketjes met iptables werkt wel goed, die had ik op 1 nic. De reden voor mij om een 3e nic te gebruiken had te maken met dhcp, die deed het niet op een alias.

  • m-m
  • Registratie: Augustus 2001
  • Niet online
sorry voor de schop maar ik zou dit toch erg graag willen weten.....

Verwijderd

Ik zou toch echt voor een extra NIC en hubje kiezen (prijs valt best mee).

Als je kernel 2.4.X hebt, dan zou ik zeer zeker met iptables uitvogelen of je dan wel over gealiaste interfaces kan masqueraden.

Verwijderd

Die extra hub kan van het merk el cheapo zijn. Je max @home bandbreedte komt niet in de buurt van de capaciteit van je hub. Iptables kan omgaan met markering van pakketjes via een alias. Ik heb die iptables-mark uit laten voeren op network. Dat werkte prima, Op basis van de iptables mark routeer je pakketjes met iproute2 naar een aparte tabel met daarin een verschillende gateway. Dat werkt . Heb het hier draaiende gehad. Ik heb toen het grootste deel van mijn info kunnen vinden via http://www.ds9a.nl . En er is een advanced routing mailinglist via die site,
Pagina: 1