Více MAC na jedné kartě

cyclone

Více MAC na jedné kartě
« kdy: 28. 02. 2014, 10:05:51 »
Dobrý deň

Potreboval by som nastaviť počítač ako NAT router/gateway na prístup na internet z lokálnej siete. Pripojenie na internet je riešené dvomi providermi. Počítač má tri sieťové karty, jednu vnútornú a dve vonkajšie, každá k jednému ISP. Vnútorná sieťová karta eth0 má alias eth0:0 s inou IP ako eth0, ale na rovnakom subnete. Cieľom je umožniť počítačom vnútri siete vybrať si, cez ktorého ISP pôjdu do internetu a to tak, že ako gateway si nastavia IP1 alebo IP2 vnútornej siete routera. Router, podľa vstupného interface ma nastavené pravidlá, ktorú routovaciu tabuľku má použiť. Problém je že, oba interface majú síce rôznu IP, ale rovnakú MAC adresu. Dá sa nejako nastaviť, aby sieťová karta mala rôzne IP, ale aj rôzne MAC adresy? Teda podobne, ako by som pridal ďalšiu sieťovú kartu. OS na routri je CentOS 5.9

Ak bude treba, rád pridám presnejšie info.

Ďakujem za odpovede.
« Poslední změna: 28. 02. 2014, 10:46:36 od Petr Krčmář »


Karel

Re:Prístup na internet cez rôznych ISP s možnosťou voľby
« Odpověď #1 kdy: 28. 02. 2014, 10:33:45 »
Jestli tomu rozumim chces jednu kartu rozdelit na dve tak pouzi bridge,
nejcasteji se to pouziva pokud mas treba kvm a chces pres jednu sitovku mit pripojeno nekolik virtualnich stroju s public ip.

na rychlo nalezene navody:
http://wiki.webstep.net/czfree/5
http://manpages.ubuntu.com/manpages/lucid/man5/bridge-utils-interfaces.5.html

M.

Re:Více MAC na jedné kartě
« Odpověď #2 kdy: 28. 02. 2014, 11:05:11 »

Kolemjdoucí

Re:Prístup na internet cez rôznych ISP s možnosťou voľby
« Odpověď #3 kdy: 28. 02. 2014, 11:05:41 »
Potreboval by som nastaviť počítač ako NAT router/gateway na prístup na internet z lokálnej siete. Pripojenie na internet je riešené dvomi providermi. Počítač má tri sieťové karty, jednu vnútornú a dve vonkajšie, každá k jednému ISP. Vnútorná sieťová karta eth0 má alias eth0:0 s inou IP ako eth0, ale na rovnakom subnete.

Nevím jestli se to vůbec dá řešit tak jak jste popsal. Já jsem to vyřešil tak, že na vnitřní síťové kartě taky mám dvě IP adresy, ale z různých subnetů. Potom pomocí "ip rule add from 192.168.123.0/24 table 123" určím že pro zdrojové IP adresy ze subnetu 192.168.123.0/24 se použije routovací tabulka 123, ve které mám default route přes příslušného ISP (a ještě správné routy do vnitřní sítě). Pokud k tomu má být i NAT, tak ho přidám klasicky přes "iptables -t nat -I POSTROUTING ...". Klienti ve vnitřní síti si potom sami mohou vybrat přes kterého ISP chtějí jít do internetu tím, jakou použijí zdrojovou IP adresu - a toto může dokonce být voleno různě pro různé aplikace běžící na jednom počítači.

K tomu ještě nezapomenout na "ip rule add from 1.2.3.4 table 123" kde 1.2.3.4 je přidělená IP adresa od ISP ke kterému vede default route v tabulce 123, aby nedocházelo k odesílání paketů se zdrojovou IP adresou od jednoho ISP přes jiného ISP, což by velmi pravděpodobně nefungovalo.

mhepp

Re:Více MAC na jedné kartě
« Odpověď #4 kdy: 28. 02. 2014, 13:02:37 »
V jádře existuje modul, který se jmenuje macvlan. Dělá v podstatě to, co chceš. Umí vytvořit nový interface, který je provázaný s nějakým fyzickým, ale má vlasní MAC adresu. Používám to, když chci získat dvě IP z DHCP serveru na jedné síťovce...

Kód: [Vybrat]
ip link add link "$basedev" name "$ifname" $macaddr type macvlan

basedev je zařízení, na které se cheš navázat (např. eth0)
ifname je jméno vytvářeného zařízení
macaddr je MAC adresa nového zařízení. Tu můžeš vynechat, pak to generuje náhodně.

Otázka je, jestli ale potřebuješ vytvářet zcela nový interface s vlastní MAC adresou. Pro tyto případy bohatě stačí alias, který už máš, jen mu přidáš ip z jiného subnetu...


cyclone

Re:Více MAC na jedné kartě
« Odpověď #5 kdy: 28. 02. 2014, 13:48:29 »
V jádře existuje modul, který se jmenuje macvlan. Dělá v podstatě to, co chceš. Umí vytvořit nový interface, který je provázaný s nějakým fyzickým, ale má vlasní MAC adresu. Používám to, když chci získat dvě IP z DHCP serveru na jedné síťovce...

Kód: [Vybrat]
ip link add link "$basedev" name "$ifname" $macaddr type macvlan
basedev je zařízení, na které se cheš navázat (např. eth0)
ifname je jméno vytvářeného zařízení
macaddr je MAC adresa nového zařízení. Tu můžeš vynechat, pak to generuje náhodně.


Toto som skúšal, ale ip link vyhlásil, že nepozná príkaz add. Podľa
Kód: [Vybrat]
ip link help
v CentOS 5.9 tam ani taká možnosť, nie je. Na virtuálnom pc s CentOS 6.3 už vyzerá, že by to malo ísť. Ďalší problém je, že je to starší počítač, výkonovo ako router dostačujúci, ale mal som s ním menšie problémy, keď tam bežal CentOS 6. Možno iné distro by šlo.

Otázka je, jestli ale potřebuješ vytvářet zcela nový interface s vlastní MAC adresou. Pro tyto případy bohatě stačí alias, který už máš, jen mu přidáš ip z jiného subnetu...

Nebol problém sa pripojiť na "normálnu" IP ani na "aliasovú" IP, problém bol, pokiaľ som chcel z iného PC použiť druhú IP ako bránu. Ten počítač ma slúžiť ako brána, a neviem, či by fungovalo, keby ostatné pc mali default gateway z iného subnetu.

mhepp

Re:Více MAC na jedné kartě
« Odpověď #6 kdy: 28. 02. 2014, 15:58:55 »
Takže máš router, který má dvě připojení k internetu a jednu vnitřní síťovku. Máš dvě skupiny klientů, kteří na sebe potřebují vidět a komunikovat spolu a Ty chceš, aby si každý klient mohl vybrat přes které připojení k internetu se dostane ven?

Tak v tom případě dej na dej na jeden interface dvě IP ze stejného rozsahu a NAT dělej podle těchto adres...

cyclone

Re:Více MAC na jedné kartě
« Odpověď #7 kdy: 28. 02. 2014, 16:08:57 »
Takže máš router, který má dvě připojení k internetu a jednu vnitřní síťovku. Máš dvě skupiny klientů, kteří na sebe potřebují vidět a komunikovat spolu a Ty chceš, aby si každý klient mohl vybrat přes které připojení k internetu se dostane ven?

Tak v tom případě dej na dej na jeden interface dvě IP ze stejného rozsahu a NAT dělej podle těchto adres...

Nie, ja nemám dve skupiny klientov, ale iba jednu skupinu v LAN. Chcem aby počítače v LAN mali možnosť vybrať si, cez ktorého ISP pojdu do netu, čo v praxi znamená zmeniť si default gateway. V súčasnosti je to riešené dvoma fyzickými routrami, ktorý každý má dve sieťovky, a nezávisle slúži ako brána cez jedného z ISP. Avšak vnútorná sieťovka každého z dvoch routerov je v rovnakom subnete (LAN). Toto chcem nahradiť jedným pc s tromi sieťovkami - jednu v lan s dvoma ip, zvyšné dve každá ako out k jednému z providerov.

Lol Phirae

Re:Více MAC na jedné kartě
« Odpověď #8 kdy: 28. 02. 2014, 17:13:04 »
Z popisu, že tam máš jakýsi alias "eth0:0" soudím, že používáš ifconfig. Tak ten mrtvej rozbitej krám přestaň používat a budeš mít po problému.  ::)

cyclone

Re:Více MAC na jedné kartě
« Odpověď #9 kdy: 19. 03. 2014, 14:44:50 »
Ďakujem za rady. Po dlhšom čase sa mi podarilo postaviť funkčný stroj. Zdá sa, že robí, to čo má (až na nejaké drobnosti, napriklat prvý záznam traceroute je z "hlavnej" IP, a nie z virtuálnej)
Počítač má 3 fyzické sieťové karty - 1 vnútornú eth0, a dve vonkajšie eth1, eth2. Na eth0 boli vytvorené dva virtuálne interface vth0 a vth1.

Rád by som vedel, či postup, ktorým som šiel, je správny. Pripájam skript.

Kód: [Vybrat]
#!/bin/bash

# ISP 1
WANNET1=172.20.0.0
WANIF1=eth1
WANIP1=172.20.0.2
WANGW1=172.20.0.1
LANIF1=vth0
LANIP1=192.168.1.2
TABLE1=T1

# ISP 2
WANNET2=172.21.0.0
WANIF2=eth2
WANIP2=172.21.0.2
WANGW2=172.21.0.1
LANIF2=vth1
LANIP2=192.168.1.3
TABLE2=T2

WANSUFFIX=24

# LAN
LANIF=eth0
LANNET=192.168.1.0
LANBCAST=192.168.1.155
LANSUFFIX=24

echo creating new interfaces
ip link add link $LANIF name $LANIF1 type macvlan
ip link add link $LANIF name $LANIF2 type macvlan

echo setting ip addresses to new interfaces
ip addr add $LANIP1/$LANSUFFIX broadcast $LANBCAST dev $LANIF1
ip addr add $LANIP2/$LANSUFFIX broadcast $LANBCAST dev $LANIF2

echo seting interfaces up
ip link set $LANIF1 up
ip link set $LANIF2 up

echo setting routing tables
ip route add default via $WANGW1 table $TABLE1
ip route add default via $WANGW2 table $TABLE2

ip route add $LANNET/$LANSUFFIX dev $LANIF1 src $LANIP1 table $TABLE1
ip route add $LANNET/$LANSUFFIX dev $LANIF2 src $LANIP2 table $TABLE2

ip route add $WANNET1/$WANSUFFIX dev $WANIF1 src $WANIP1 table $TABLE1
ip route add $WANNET2/$WANSUFFIX dev $WANIF2 src $WANIP2 table $TABLE2

echo settign rules
ip rule add from $LANIP1 table $TABLE1
ip rule add from $LANIP2 table $TABLE2

ip rule add from $WANIP1 table $TABLE1
ip rule add from $WANIP2 table $TABLE2

ip rule add iif $LANIF1 table $TABLE1
ip rule add iif $LANIF2 table $TABLE2

echo setting arp filter
sysctl -w net.ipv4.conf.all.arp_filter=1

# ======================================================================

#
# Flush all current rules from iptables
#
iptables -F

#
# Set default policies for INPUT, FORWARD and OUTPUT chains
#
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

#
# Set access for localhost and LAN
#
iptables -A INPUT -i lo     -j ACCEPT
iptables -A INPUT -i ${LANIF} -j ACCEPT

#
# Drop connection without syn packet
#
iptables -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

#
# Accept packets belonging to established and related connections
#
iptables -A FORWARD -i $WANIF1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i $WANIF2 -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Enable IP masquerading
#
iptables -t nat -A POSTROUTING  -o $WANIF1 -j SNAT --to $WANIP1
iptables -t nat -A POSTROUTING  -o $WANIF2 -j SNAT --to $WANIP2


iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# Drop forwarding from outside
#
iptables -A FORWARD -i $WANIF1 -j DROP
iptables -A FORWARD -i $WANIF2 -j DROP

Ešte pridávam konfigurák siete.

Kód: [Vybrat]
# The loopback network interface
auto lo
iface lo inet loopback

#eth0
auto eth0
iface eth0 inet static
    address 192.168.1.1
    netmask 255.255.255.0

#eth1
auto eth1
iface eth1 inet static
    address 172.20.0.2
    netmask 255.255.255.0

#eth2
auto eth2
iface eth2 inet static
    address 172.21.0.2
    netmask 255.255.255.0

pavele

Re:Více MAC na jedné kartě
« Odpověď #10 kdy: 19. 03. 2014, 21:02:11 »
Zajímala by mě ta virtuální IP vth0.
Když provedeš arping z druhého PC, budou MAC adresy vth0 a eth0 shodné nebo se budou lišit?

cyclone

Re:Více MAC na jedné kartě
« Odpověď #11 kdy: 19. 03. 2014, 21:21:48 »
Zajímala by mě ta virtuální IP vth0.
Když provedeš arping z druhého PC, budou MAC adresy vth0 a eth0 shodné nebo se budou lišit?

Myslíš, že keď pingnem z druhého PC IP pre eth0 a vth0? Arp tabulka na tom druhom pc bude obsahovať rôzne MAC adresy pre tieto dve IP.

pavele

Re:Více MAC na jedné kartě
« Odpověď #12 kdy: 19. 03. 2014, 21:55:52 »
Já když provedu:
ip link add link eth0 name vth0 type macvlan
ip addr add 192.168.1.72/24 broadcast 192.168.0.255 dev vth0
ip link set vth0 up

A potom arping na IP eth0 a virtuální 192.168.1.72, na výstupu mám dvě shodné MAC adresy.

cyclone

Re:Více MAC na jedné kartě
« Odpověď #13 kdy: 19. 03. 2014, 22:18:45 »
Já když provedu:
ip link add link eth0 name vth0 type macvlan
ip addr add 192.168.1.72/24 broadcast 192.168.0.255 dev vth0
ip link set vth0 up

A potom arping na IP eth0 a virtuální 192.168.1.72, na výstupu mám dvě shodné MAC adresy.

To, aby boli aj z vonku rozne mac adresy, prave zabezpecuje
Kód: [Vybrat]
sysctl -w net.ipv4.conf.all.arp_filter=1Postupoval som, o.i., podla http://serverfault.com/questions/336021/two-network-interfaces-and-two-ip-addresses-on-the-same-subnet-in-linux