2 sitove karty v jednom PC a v jedne siti - jak?
Mam PC s Ubuntu, a s dvemi sitovymi kartami. Chci dosahnout toho aby obe sitove karty byly v stejne lokalni siti - s ruznymi IP adresami. Data aby tekly defaultne pres prvni IP adresu, pres ETH0. Jen data z DVB-T karty (pres dvblast) tekly ven z te druhe IP adresy - pres ETH1, aby to nevytezovalo ETH0.
Takhle to vypada ted:
ifconfig:
eth0 Link encap:Ethernet HWadr 00:27:0e:1d:0e:86
inet adr:192.168.0.32 Všesměr:192.168.0.255 Maska:255.255.255.0
inet6-adr: fe80::227:eff:fe1d:e86/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1
RX packets:527247 errors:0 dropped:235 overruns:0 frame:0
TX packets:12858272 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
Přijato bajtů: 36890404 (36.8 MB) Odesláno bajtů: 286764875 (286.7 MB)
Přerušení:44 Vstupně/Výstupní port:0xc000
eth1 Link encap:Ethernet HWadr 00:15:17:ed:cb:6d
inet adr:192.168.0.132 Všesměr:192.168.0.255 Maska:255.255.255.0
inet6-adr: fe80::215:17ff:feed:cb6d/64 Rozsah:Linka
AKTIVOVÁNO VŠESMĚROVÉ_VYSÍLÁNÍ BĚŽÍ MULTICAST MTU:1500 Metrika:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
kolizí:0 délka odchozí fronty:1000
Přijato bajtů: 0 (0.0 B) Odesláno bajtů: 492 (492.0 B)
Přerušení:16 Paměť:d0740000-d0760000
adapters:
auto eth0
iface eth0 inet static
address 192.168.0.32
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
auto eth1
iface eth1 inet static
address 192.168.0.132
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
route:
Adresát Brána Maska Přízn Metrik Odkaz Užt Rozhraní
default 192.168.0.1 0.0.0.0 UG 100 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 * 255.255.255.0 U 0 0 0 eth1
dvbast nastaven mam na 192.168.0.132, ale stejne vse tece pres ETH0. Nejak se v tom motam, predpokladam ze to musim zadat do route, ale nevim jak presne? Urcite je to trivialnost a delam tady ze sebe blbce, ale uz mi to dnes vubec nemysli...
no jasně, protože se bere první vyhovující záznam v routovací tabulce.
To co potřebuješ ty, je dynamický routing na základě zdrojového portu (policy routing).
Máš několik možností:
1. "natvrdo" pomocí iptables/netfilter vymanglovat bránu, jenže to bude fungovat jen pokud se jedná o routovaný provoz.
2. použít iproute2, je třeba použít ip rule a tím pádem (opět) policy routing
http://www.policyrouting.org/iproute2.doc.html#ss9 .6.1
kapitola 9.6
P.S.: pokud se dobře pamatuju, při použití policy based routingu nesmí být použito klasické routovací tabulky.
edit: myslím ale, že rule nepočítá s portem, tj. že i tak budeš potřebovat netfilter. viz tabulka 3.2.: http://www.faqs.org/docs/iptables/traversingoftabl es.html
edit2: dneska mi to už nemyslí, zítra se zkusím zamyslet znovu.
Jestli myslis DVB last aby z toho pocitace vysilal, tak zkus se podivat na option:
/ifindex=X (binds to a specific network interface, by link number)
/ifaddr=XXX.XXX.XXX.XXX (binds to a specific network interface, by address)
Tím prostě zajistíš, že to bude vysílat jen ze specifické síťovky.
to mě napadlo včera ve sprše, že stačí nastavit démona aby poslouchal jen na jednom ifacu..
Tak ako to myslis je to vcelku na***o.
Nebude to sice vytezovat eth0, ovsem celkovy traffic sa spoji na switchi. Lacne switche zvycajne pracuju tak, ze prepajaju sucastne len dva porty, tudiz ked budes mat do switcha pichnutu aj eth1, tak transfer dat pre eth1 bude zahajeny az vtedy ked skonci prenos pre eth0.
Nikdy nedosiahnes paraleny sposob prevadzky uz aj z toho dovodu, ze obsluha preruseni pre hardware je v operacnom systeme sekvencna. To znamena len tolko, ze pakety sa prijimaju najprv z eth0 a potom z eth1. Nikdy sa neprijimaju naraz z obidvoch sietovych kariet sucastne. Jedine vylepsenie je tam len v tom, ze sietove karty maju buffer(e) pre jeden ramec. V sucastnosti su karty riesene pre uprednostnovanie prevadzky a z tohoto hladiska maju aj viac buffrov (Tx/Rx queue), niekedy aj pre viac ramcov, hlavne pri vyssich rychlostiach kde sa pouziva Jumbo frames. Tie lepsie a drahsie karty vedia potom ramce skladat/rozkladat (segmentovat) a pocitat CRC vo vlastnej rezii pretoze maju na karte sietovy koprocesor. Kukni sa na karty, ktore maju zabudovanu funkciu "segmentation offloading".
ta ETH1 je "serverovy" Intel gigabit v PCIe, celkem slusna karta (EXPI9400PT tusim)- zbyla mi z neceho jineho. Vim co a proc chci, je mi jasne ze se to na switchi potka - ale ten taky neni zadne orezavatko a data z nej tecou dal po 10Gb optice. Proto chci abych mel 2 IP na 2 ruznych gigovych rozhranich a mohl je obe plne vyuzit. Pokud by to nestihalo kvuli obsluze karet neb integrovana je nejaky Realtek shit, muzu misto ni vrazit ten samy Intel do dalsi PCIe.
(jen ukecat dvblast nestaci, stream pujde i pres VLC pokud bude potreba rekompresi, nebo pres udpxy pokud unicast)
No to uz je ina vec...
Ak mas slusnejsi switch povedzme z triedy Cisco Catalyst, ktory vie obsluhovat viac portov sucastne ostava uzke hrdlo na interuptoch v systeme, tudiz na kvalite ovladacov.
Da sa povedat, ze lepsie vyrieseny prerusovaci podsystem ma Windows a obsluha viacerych kariet by tam mala byt lepsia. Pouziva sa rozdelenie preruseni na kratku obsluhu a odlozenu obsluhu (ISR/DPC). Linux to ma podobne az na prevedenie samotneho systemu maskovania prerusenia, ktore je na Windowse vyriesne lepsie (ma to mensie latencie a priblizuje sa to uz k realtime OS). Ak by si chcel na Linuxe nizke latencie, bude zrejme treba pouzit specialne realtimove jadro.
I VLC jde nastavit, aby posílalo konkrétním rozhraním.