Router med multiwan och vlan?

Konfiguration av nätverk, hur man använder Ubuntu som server, och håller sin dator säker
w00t
Inlägg: 6
Blev medlem: 04 nov 2010, 19:29
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu

Router med multiwan och vlan?

Inlägg av w00t »

Halloj i stugan. Börjar mitt medlemskap med en hård nöt att knäcka :)

Skall försöka förklara mitt lilla problem så gott jag kan.

Användningsområdet för denna server är att aggera router med multiwan. Då jag har bredbandsbolagets fiber, 100/10MBit (i verkligheten 100/20MBit~), där jag får 5 adresser från BBB varav 20MBit upload /IP. Vilket innebär att 5 datorer kan samtidigt ladda upp i 2MB/s~ vilket i teorin(praktiken? :p) ger 100/100MBit.

Tidigare har jag använt en stor, högljudd samt slö miditower full atx stående i vardagsrummet som klarat denna syssla utmärkt. Då har jag kört 6st fysiska nätverkskort samt operativsystemet ClearOS som bygger på CentOS och gamla ClarkConnect. Klickar i multiwan och nätverkskorten plockar upp alla dessa 5st ipadresser för att sedan bygga upp ett NAT bakom vilket gör att en ensam datorn ensam kan utnyttja full upload. Typ 8MB/s med torrents eller andra protokoll som stödjer flera trådar.

Då jag inte kan något om Linux så passar ClearOS webgui riktigt bra. problemet var bara att denna gamla dator inte pallade trycket riktigt samt höjde elräkningen något. Kastade ut denna brummande skitburk och köpa mig ett litet m-ITX Atom-kort (Intel D510MO) i tron om att denna skulle kunna ersätta den tidigare med det inbyggda Realtek GBitkortet samt ett extra Intel1000GT i den enda PCI porten. Tanken var då att virtuallisera 5 NIC's på detta Intelkort. Dock visade det sig att varken ClearOS eller pfSense (FreeBSD) kunde virtualisera nätverkskort på ett smidigt sätt eller utan extra utrustning som switch med VLAN eller kunna plocka ip från ISP't via DHCP.

Fick då tipset att sätta upp en valfri Linux-dist och göra detta manuellt istället. Problemet är att jag inte alls är kunnig i Linux, kan ingenting i princip. Det jag kan är typ navigera runt och skapa mappar :p thats it.
Valfri Linux instalation + shorewall (eller valfri iptables frontend) + macvlan är precis vad du söker
Satte mig ner och kollade lite på shorewall men blev inte mycket smartare där då mina Linuxkunskaper som sagt fallerar.

Så, kort sammanfattat. Vad har vi?

En Atom 1,66GHz dualcore
2GB ram
Inbyggt Realtek 1Gbit
I PCI slotten Intel PRO1000GT 1Gbit (denna fokuserar vi på när vi skall skapa vlans)

Ubuntu 10.10 server.
100/20(5xDHCP) Mbit.
Okunskap.

Så, hoppas med lite (läs mycket) hjälp att detta skall kunna fungera, om någon har tiden/orken att sätta sig in i mitt problem så vore det underbart. En step-by-step beskrivning är verkligen det som behövs, något som "börja med att lägga till ett vlan" hjälper inte mycket då jag inte har en blekaste hur det skall gå till.

Planen är i alla fall;

1. Börja med att få till ett gäng virtuella nätverkskort.

2. Binda ihop WAN dra igång DHCP för LAN.

2. Sätta upp regler för hur trafiken skall prioriteras. I detta fall balansera trafiken utöver alla de 5 linorna vi har. Även låsa webbaserad (80) samt SSL (433) till WAN1.

3. Sätta igång brandvägg (iptables?) och öppna upp lite portar.

En step-by-step så kanske vi kan få något fungerande utav det hela :)

MVH O0
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: Router med multiwan och vlan?

Inlägg av Emil.s »

Hej och välkommen! :)

Själv hade jag nog köpt en switch med VLAN. Käns som den enklaste lösningen.
Själv har jag en sån här:
http://www.prisjakt.nu/produkt.php?p=256124

Håller mycket hög kvalité, VLAN, SNMP osv...

Virtuella interfaces kallas TUN eller TAP beroende på funktion:
http://en.wikipedia.org/wiki/TUN/TAP

Grundproblemet är ju dock att få flera IPn på samma interface.
Normalt så kör man ju bara "ifconfig eth0:1 x.x.x.x".
Testade att köra "ifconfig eth0:1 hw ether 00:1b:11:XX:XX:XX" där XX är en annan adress är den på eth0, men då ändrades adressen på alla interfaes som finns på eth0.

Bäst vore nog att skapa en massa TAP interfaces som är bryggade med eth0, och sen köra DHCP på TAP interfacen.

Sen borde Linux routa ut paket på alla interfaces automatiskt tror jag. (förutsatt att man har gw 0.0.0.0/0 med samma metric på alla interfaces).

Har dock ingen aning om hur man skapar TUN/TAP interfaces.
Sköts oftast av andra program. (t.ex qemu), men det bör ju gå på något sätt. Någon annan som vet kanske? :)
Home sweet ~/ = http://sandnabba.se
w00t
Inlägg: 6
Blev medlem: 04 nov 2010, 19:29
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu

Re: Router med multiwan och vlan?

Inlägg av w00t »

Emil.s skrev:Hej och välkommen! :)

Själv hade jag nog köpt en switch med VLAN. Käns som den enklaste lösningen.
Själv har jag en sån här:
http://www.prisjakt.nu/produkt.php?p=256124

Håller mycket hög kvalité, VLAN, SNMP osv...

Virtuella interfaces kallas TUN eller TAP beroende på funktion:
http://en.wikipedia.org/wiki/TUN/TAP

Grundproblemet är ju dock att få flera IPn på samma interface.
Normalt så kör man ju bara "ifconfig eth0:1 x.x.x.x".
Testade att köra "ifconfig eth0:1 hw ether 00:1b:11:XX:XX:XX" där XX är en annan adress är den på eth0, men då ändrades adressen på alla interfaes som finns på eth0.

Bäst vore nog att skapa en massa TAP interfaces som är bryggade med eth0, och sen köra DHCP på TAP interfacen.

Sen borde Linux routa ut paket på alla interfaces automatiskt tror jag. (förutsatt att man har gw 0.0.0.0/0 med samma metric på alla interfaces).

Har dock ingen aning om hur man skapar TUN/TAP interfaces.
Sköts oftast av andra program. (t.ex qemu), men det bör ju gå på något sätt. Någon annan som vet kanske? :)
Jag försöker undvika att köpa ny hårdvara en så länge, annars löses problemet ganska lätt genom att inhandla ett Intel quad nic :)

Hittade även en liten guide för gentoo som har några år på nacken som lyder;
Sen behövs även dhcpcd för att hämta adresser via dhcp och ip route, ett mer utförligt program för att specificera rutter.

Kod: Markera allt

emerge -av dhcpcd
emerge -av iproute2
Se till att ditt interface är startat och inte roffar åt sig en IP-address.

Kod: Markera allt

ifconfig eth0 up
dhcpcd -k eth0
Skapa två nya MAC-VLAN interface. Specifiera vilket hårdvaruinterface som skall använda dessa MAC-VLAN (där trafiken kommer gå rent fysiskt), en unik MAC-address och namn på varje interface.

Kod: Markera allt

ip link add link eth0 address 00:1A:D0:10:10:10 NAMN1 type macvlan
ip link add link eth0 address 00:1A:D0:10:10:20 NAMN2 type macvlan
De skall inte använda sig av sin default gateway.

Kod: Markera allt

dhcpcd -G NAMN1
dhcpcd -G NAMN2
För att dessa alltid skall skapas vid uppstart kan man bland annat lägga dessa rader i /etc/conf.d/local.start
Se även till att ditt valda fysiska interface startar, men inte skaffar en ip-adress. Editera /etc/conf.d/net med följande.

Kod: Markera allt

config_eth0=( "null" )
Nu till själva lastbalanseringen. Du specifierar din default gateway ut mot Internet för båda dina MAC-VLAN interface med samma vikt. Detta leder till att de turas om med trafiken och vips används båda IP-adresserna.

Kod: Markera allt

ip route add default scope global nexthop via XXX.XXX.XXX.XXX dev NAMN1 weight 1 nexthop via XXX.XXX.XXX.XXX dev NAMN2 weight 1
Om du får upp felmeddelanden så prova med att ta bort nuvarande rutter och därefter lägga till de nya.

Kod: Markera allt

ip route del default && ip route add default scope global nexthop via XXX.XXX.XXX.XXX dev NAMN1 weight 1 nexthop via XXX.XXX.XXX.XXX dev NAMN2 weight 1
Nu är grunderna inne för att lastbalanseringen skall fungera.

Optimeringar

Om dina Internet-adresser byts ut och flyttas till andra nät med nya gateways och dylikt så kan det vara bra med lite redundans.
Variant på ovanstående local.start, med en variabel som hämtar default gateway ifall den skulle ändras.

Kod: Markera allt

GW1=`route -n |grep ^"0.0.0.0" |awk '{print $2}'`
 
ip route del default && ip route add default scope global nexthop via $GW1 dev NAMN1 weight 1 nexthop via $GW1 dev NAMN2 weight 1
Följande skript körs som root i en screen och ser till att byta ut routes även under drift om gateway ändras.

Kod: Markera allt

#!/bin/bash
#Detta skript skall kolla anslutning mot internet. Om detta inte finns
#skall den logga detta och skapa nya routes baserade på den gateway
#som för närvarande är tilldelad.
#DHCPCD fixar nya IP:n och DNS automagiskt, men eftersom vi
#lastbalanserar så vill vi lägga till default routes själva.
 
#Hämtar default gateway. Används till att skapa nya routes.
GW1=`route -n |grep ^"0.0.0.0" |awk '{print $2}'`
 
#Oändlig loop.
while(true); do
#Pingar ping.sunet.se och loggar till en fil. Endast det senaste resultatet
#loggas. Pinga till en bogusadress för att felsöka unknown host.
ping -c5 "ping.sunet.se" &> /var/log/ping.log
 
#Om det det är unknown host så skriv det och bygg om routes.
if [ "`cat /var/log/ping.log |awk '{print $2}'`" = "unknown" ]; then
  echo `date` "Unknown host. Redoing routes." >> /var/log/pinglog.log;
 ip route del default && ip route add default scope global nexthop via $GW1 dev NAMN1 weight 1 nexthop via $GW1 dev NAMN2 weight 1;
   #Sover i 15min om det felar innan det körs igen.
   sleep 900;
 
 #Om det det är 100% packetloss så skriv det och bygg om routes.
 elif [ "`cat /var/log/ping.log |grep % |awk '{print $6}' |sed s/'%'//`" = "100" ]; then
    echo `date` "100% packet loss. Redoing routes." >> /var/log/pinglog.log;
 ip route del default && ip route add default scope global nexthop via $GW1 dev NAMN1 weight 1 nexthop via $GW1 dev NAMN2 weight 1;
    #Sover i 15min om det felar innan det körs igen.
    sleep 900;
 #Om allt är som det ska, fortsätt.
 else
  #Printar ut datum och OK till loggen.
  echo `date` "OK" >> /var/log/pinglog.log
   #Sover i 5h om allt är ok innan det körs igen.
   sleep 14440
fi
done
Ser ut att vara precis det vi är ute efter, någon som kanske kan ta en titt på detta och översätta till ubuntu?
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: Router med multiwan och vlan?

Inlägg av Emil.s »

Ja nu har vi helt klart något. :)

Det är egentligen ingen skillnad mellan olika distar på sånt här, förutom vilka filer man ska ändra när man ska göra saker permanent.

Börja med att lägga till interfacen:

Kod: Markera allt

ip link add link eth0 address 00:XX:XX:XX:XX:01 internet1 type macvlan
ip link add link eth0 address 00:XX:XX:XX:XX:02 internet2 type macvlan
ip link add link eth0 address 00:XX:XX:XX:XX:03 internet3 type macvlan
osv.

Nu bör det bara vara att skaffa en DHCP adress på varje interface:

Kod: Markera allt

sudo dhclient internet1
sudo dhclient internet2
sudo dhclient internet3
osv
Nu finns det en minimal chans att det funkar, så börja med detta, så ser vi vad som händer :)

Posta gärna output av "sudo route -n", och "ifconfig -a" när du har gort ovanstående.
Home sweet ~/ = http://sandnabba.se
Användarvisningsbild
Kirill
Inlägg: 1824
Blev medlem: 18 okt 2009, 11:50
OS: Ubuntu
Utgåva: 24.04 Noble Numbat LTS
Ort: Gränsfors
Kontakt:

Re: Router med multiwan och vlan?

Inlägg av Kirill »

Har du missat: http://www.sweclockers.com/forum/14-int ... d-pfsense/

Och BBB ger 10 mbit /IP i upload, INTE 20 mbit /IP!
Vilket i runda slängar ger dig mellan 50-70 mbit i upload istället för 10 mbit 8)

Sitter själv med BBB och har testat detta med pfSense och är huuuur nöjd som helst!

Har du inte råd att köpa dual ports eller quad ports NIC, så kan du köra med ESXi och köra pfSense virtuellt.

//Pontus
Webmaster för
Cracker.se Linux, IT-säkerhet, Mac & Boxee Box!

Mina guider
http://ubuntu-se.org/phpBB3/viewtopic.php?f=19&t=56551
w00t
Inlägg: 6
Blev medlem: 04 nov 2010, 19:29
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu

Re: Router med multiwan och vlan?

Inlägg av w00t »

Pontus Öhman skrev:Har du missat: http://www.sweclockers.com/forum/14-int ... d-pfsense/

Och BBB ger 10 mbit /IP i upload, INTE 20 mbit /IP!
Vilket i runda slängar ger dig mellan 50-70 mbit i upload istället för 10 mbit 8)

Sitter själv med BBB och har testat detta med pfSense och är huuuur nöjd som helst!

Har du inte råd att köpa dual ports eller quad ports NIC, så kan du köra med ESXi och köra pfSense virtuellt.

//Pontus
Nejdå, har kört pfSense i många år och det fungerar riktigt bra. Missade tydligen det i mitt första inlägg, min gamla router körde både clearOS samt pfSense och ingen av dem stödjer virtuella nätverkskort.

BBB ger på pappret ut 100/10 ja men jag (och många andra som har bbb's fiber) får ut betydligt mer på utlinan än 10Mbit. Jag får ut mellan 15-19Mbit upload på varje IP.

Har experimenterat otroligt mycket senaste månaden för att försöka få detta att fungera. Det inbyggda nätverkskortet fungerar inte optimalt i ESXi så det går bort, vmware server fungerar OK men får kass prestanda i och med att CPUn inte stödjer hårdvaruvirtualisering. Maxar ca 60Mbit när jag kör pfsense virtuellt.

Och ett intel quad nic går väl loss på ca 1500~ +/- någon femhundring begagnat så det har jag ingen lust med. Så tro mig, har varit och härvat en massa i virtuella svängen och kom fram till att den enda vettiga lösningen (förutom att köpa annan hårdvara) är att köra enligt mitt huvudinlägg.
w00t
Inlägg: 6
Blev medlem: 04 nov 2010, 19:29
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu

Re: Router med multiwan och vlan?

Inlägg av w00t »

Emil.s skrev:Ja nu har vi helt klart något. :)

Det är egentligen ingen skillnad mellan olika distar på sånt här, förutom vilka filer man ska ändra när man ska göra saker permanent.

Börja med att lägga till interfacen:

Kod: Markera allt

ip link add link eth0 address 00:XX:XX:XX:XX:01 internet1 type macvlan
ip link add link eth0 address 00:XX:XX:XX:XX:02 internet2 type macvlan
ip link add link eth0 address 00:XX:XX:XX:XX:03 internet3 type macvlan
osv.
Har gjort detta+dhclient och de plockade fint upp en egen adress. Kom dock fram till att det var dumt att köra med alla 5 på en gång och skulle således plocka bort dem och prova först med två (så jag också får internet.. ;) ) plockade bort ett interface och då dog SSH så jag återkommer senare ikväll :p
w00t
Inlägg: 6
Blev medlem: 04 nov 2010, 19:29
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu

Re: Router med multiwan och vlan?

Inlägg av w00t »

Emil.s skrev:Ja nu har vi helt klart något. :)

Kod: Markera allt

route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
85.228.208.0    0.0.0.0         255.255.240.0   U     0      0        0 eth1
85.228.208.0    0.0.0.0         255.255.240.0   U     0      0        0 WAN1
0.0.0.0         85.228.208.1    0.0.0.0         UG    0      0        0 WAN1
0.0.0.0         85.228.208.1    0.0.0.0         UG    100    0        0 eth1

Kod: Markera allt

 ifconfig -a
WAN1      Link encap:Ethernet  HWaddr 08:00:27:b7:2a:01
          inet addr:[b]85.228.XXX.XXX[/b]  Bcast:85.228.223.255  Mask:255.255.240.0
          inet6 addr: 2002:55e4:d68f:0:a00:27ff:feb7:2a01/64 Scope:Global
          inet6 addr: fe80::a00:27ff:feb7:2a01/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68551 errors:0 dropped:0 overruns:0 frame:0
          TX packets:432 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:4830225 (4.8 MB)  TX bytes:60779 (60.7 KB)

WAN2      Link encap:Ethernet  HWaddr 08:00:27:3b:e4:6b
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

eth0      Link encap:Ethernet  HWaddr 70:71:bc:63:28:7a
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:44 Base address:0x8000

eth1      Link encap:Ethernet  HWaddr 00:1b:21:4d:a2:82
          inet addr:[b]85.228.XXX.XXX[/b]  Bcast:85.228.223.255  Mask:255.255.240.0
          inet6 addr: 2002:55e4:d68f:0:21b:21ff:fe4d:a282/64 Scope:Global
          inet6 addr: fe80::21b:21ff:fe4d:a282/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:122900 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1707 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:8611036 (8.6 MB)  TX bytes:230952 (230.9 KB)
Ser ju OK ut, eth0 kommer vara LAN porten, eth1 bör vi stänga ner? Och sedan köra på WAN1 samt 2 (virtuella).

Nästa steg? :)
Emil.s
Inlägg: 6633
Blev medlem: 12 dec 2006, 23:20
OS: Ubuntu
Ort: /Dalarna/Hedemora/
Kontakt:

Re: Router med multiwan och vlan?

Inlägg av Emil.s »

w00t skrev: Ser ju OK ut, eth0 kommer vara LAN porten, eth1 bör vi stänga ner? Och sedan köra på WAN1 samt 2 (virtuella).

Nästa steg? :)
Det ser helt ok ut :)
Och ja, det är nog enklast att låta eth1 vara (ifconfig eth1 0.0.0.0), och bara köra WAN1-5 osv...

Försök att få till en routingtabell som ser ut så här:
Destination Gateway Genmask Flags Metric Ref Use Iface
85.228.208.0 0.0.0.0 255.255.240.0 U 0 0 0 WAN1
85.228.208.0 0.0.0.0 255.255.240.0 U 0 0 0 WAN2
85.228.208.0 0.0.0.0 255.255.240.0 U 0 0 0 WAN3
85.228.208.0 0.0.0.0 255.255.240.0 U 0 0 0 WAN4
85.228.208.0 0.0.0.0 255.255.240.0 U 0 0 0 WAN5
0.0.0.0 85.228.208.1 0.0.0.0 UG 100 0 0 WAN1
0.0.0.0 85.228.208.1 0.0.0.0 UG 100 0 0 WAN2
0.0.0.0 85.228.208.1 0.0.0.0 UG 100 0 0 WAN3
0.0.0.0 85.228.208.1 0.0.0.0 UG 100 0 0 WAN4
0.0.0.0 85.228.208.1 0.0.0.0 UG 100 0 0 WAN5

Då borde nog burken lastbalancera av sig självt.

Annars så får du köra kommandat som du skriv själv ovan:

Kod: Markera allt

ip route add default scope global nexthop via XXX.XXX.XXX.XXX dev NAMN1 weight 1 nexthop via XXX.XXX.XXX.XXX dev NAMN2 weight 1
Där XXX är din gateway (85.228.208.1), och namn1/2 ersätts av WAN1-2 osv. Sen fyller du bara på med WAN3-5 på samma sätt.
Home sweet ~/ = http://sandnabba.se
Skriv svar

Återgå till "Nätverk, säkerhet och servrar"