Egy interface-en (eth0) taggelt csomagok jönnek, 101,102,103 vlan id-kkal.
Másik három interface-en (eth101, eth102, eth103) taggeletlen csomagok jönnek.
Van 3 dummy interface-em. ip route:
10.10.101.0/24 dev dummy101 proto kernel scope link src 10.10.101.1
10.10.102.0/24 dev dummy102 proto kernel scope link src 10.10.102.1
10.10.103.0/24 dev dummy103 proto kernel scope link src 10.10.103.1
Ezeket berakom egy bridge-be:
br0-ban az eth0, eth101, eth102, eth103, dummy101, dummy102, dummy103 interface-ek.
Mi kell ahhoz, hogy ha bejön az eth101-on egy csomag, akkor az kapjon egy tag-et (101-et) és ezen az interface-en kimenjen de tag nélkül, ami a 101-es vlanba tartozik?
Szóval az lenne a cél, hogy ami dummy101 vagy eth101-as interface-en közlekedik az egy vlanban legyen azzal, ami az eth0-án 101-es vlan id-val.
Ugyan így a 102 és a 103
Maga a linux amin ezek az interface-ek, a router a vlanok/alhálózatok között, a dummy interface a gateway adott vlanban/alhálózatban. (vlan:subnet 1:1)
Valami ilyesmire gondoltam annak alapján amit hirtelen olvastam bridge vlan-ről
root@router# bridge vlan
port vlan ids
eth0 None
eth101 101 PVID Egress Untagged
eth102 102 PVID Egress Untagged
eth103 103 PVID Egress Untagged
dummy101 101
dummy102 102
dummy103 103
...de sajnos ez nem így működik. Ill. a nyelvemen is van valami amit kifelejtek, de gyanús hogy amúgy se jó az elképzelésem.
Jelenleg ha az eth101-en keresztül pingelem a dummy101 címét, akkor tcpdump-al eth101 látom a requesteket, de a reply-t nem. Viszont a dummy101-et tcpdump közben, látom a reply-ket, de a requesteket nem.
Mi hiányzik? Alapvetően megcsinálható így nem? ...vagy hogy csinálnátok?
Hozzászólások
Szerintem ehhez switch kell, ha más nem teszel fel openvswitch-et. A bridge nem alkalmas erre.
Fedora 38, Thinkpad x280
Openswitchet nem ismerem, de megnézem, köszönöm!
Miért gondolod hogy bridge-el nem lehet, mi az elméleti akadálya?
Ha ennyi a cél akkor kell egy eth0.101, kell egy br101 mondjuk es ebbe belerakod a dummy101, eth101 es az eth0.101 et. Ezt irták már. eht0 csak up on legyen. Azt nem kell tenni sehova.
Fedora 38, Thinkpad x280
Vlan-onkent csinalj kulon bridge-et, csinalj vlan interface-t eth0.101-hez azt rakd 1 bridge-be (pl br101) eth101-el es a bridge interface-re vedd fel a 10.10.101.0/24-es subnetet, nem kell dummy interface ezert es ugyanigy a masik 2 vlan-hoz is.
Dummy szimpatikusabb lenne, de kipróbálom.
...és mi legyen az eth0-al? Mindhárom bridgbe-be és csak azt engedi ami a megfelelő vlanban?
Mitől jutna el az eth101-en bejövő csomag az eth0 mögötti 101-es vlanban? (Mi taggelne)
Mi lehet az elméleti akadálya az elképzelésemnek?
Nem mondtad milyen distro kis elteresek lehetnek peldakent debian wiki oldal, arra gondoltam hogy az eth0 interface-eden csinalsz vlan interface-eket (debian vonalon vlan csomagot kell telepiteni ha nincs fenn) aminek neve szokott lenni a <fizikai interface>.<vlan id> de vlan<vlanid> vagy sok egyeb formatum is lehet. Igy a fizikai eth0 mellett lesz 3 vlan interface-ed, meg van mellette a 3 eth101-103 interface-ed es ezeket parossaval rakod 1-1 bridge-be (debian vonalon ifenslave csomag kell bar ujabbban ezek mar talan ip parancsokkal is megoldhatok) ami ad egy layer2 kapcsolatot, ha a bridge interface-ekre rateszed az ip tartomanyt amit adott vlan-okon szeretnel es ip forwardingot engedelyezed akkor lesz az a szervered lehet a router a vlan-ok kozott.
De fentebb emlitett ovs (openvswitch) is jo lehet erre, logikailag hasonlot kell ott is megvalositanod.
Kétféleképpen lehet bridge-t használni VLAN-okkal. Van a VLAN aware bridge, és a VLAN unaware bridge (ez a default linuxon és a leírások 99%-a ennek használatáról szól).
A fenti példában te VLAN aware bridge-et használnál...
Javasolt írások a témában:
https://vincent.bernat.ch/en/blog/2017-linux-bridge-isolation
https://developers.redhat.com/blog/2017/09/14/vlan-filter-support-on-br…
https://linux-blog.anracom.com/tag/vlan-aware-bridge/
Köszönöm, olvasom! Hasznosak! Valahol nagyon összezavarodtam...
Szia! Meg lehet csinálni, már ha jól értettem a kérdésed. Jól indultál el, annyi, hogy kell még eth0-ra is mindhárom VLAN, másképp eldobja őket, meg a bridge-re is. Ha kiadod a bridge vlan-t ezt kellene lásd:
Gyorsan össze is dobtam a setupodat, a h101 gép pingeli a h1-et, de alapból egyik sincs tagelve, hanem a tagger gép tageli meg h101-et, az trunkon küldi a switcher gépnek. Ez a swticher gép szintén vlan aware bridgel továbbdobja eth101 felé, leveszi a taget és h1 gép már tageletlenül kapja meg. tcpdumppal megnézheted, eth0-ás ICMP-n még ott a tag.
Setup:
Kipróbáláshoz: apt install mininet, aztán meg sudo python vlans.py (vagy amilyen néven lemented). Ez után mininet konzolban add ki az xterm h1 h101 switcher parancsot és pingelgess.
Hogy már itt is lehet "like"-olni! :)
Köszönöm az írásodat!
Egyelőre csak javítgatni volt időm a korábbi próbálkozásomat annak alapján amit írtál és nem jártam sikerrel (fél sikereim voltak), de hamarosan folyt... Ill. ezt a mininetet amúgy is érdemes lenne megismerni azt hiszem.
(Hogy mit kutyultam össze amiért csak félsikerek, pl sokszorozódó csomagok... :o), nemsokára végigjátszom rendesen.)
Hajrá, sok sikert! Máskülönben a mininet igazából csak egy python wrapper a Linuxos veth/network namespacek fölött, de ilyesmire teljesen jó, például ha olyan hálózatos dolgokat akarsz kipróbálni amiket fizikai gépekkel nehéz lenne reprodukálni azt könnyen meg lehet vele csinálni.
Alapvetően működni látszik, de broadcast storm (arp), ill. vannak duplikált icmp pingek is.
Egyelőre nem bírok rájönni hogy utóbbi miért, ill. hogy hogyan kellene mindkettőt megoldanom.
arptables, ebtables, iptables, és/vagy namespace-ek..., de szerintem megoldható.
Bár egyelőre az icmp-t nem értem hogyan sikerül...
Érdekes. Pedig alapvetően ebben a topológiában nincs is kör, broadcast stormnak nem szabadna előfordulni. A brctl showstp br0 mutat valami érdekest? Esetleg valahol duplikált MAC címek? Bár gondolom ezeket ellenőrizted.
Jó a dolog, működik rendesen!
Ami nekem bekavart az az, hogy az egész vmware esxi-ben van. Egy-egy subnet-vlan egy-egy portgroup. A vmware vswitchre, portroupra vonatkozó beállítások nem voltak megfelelőek, ill. a trunk portra meg egy esxi-ben futo hyperv küldi a taggelt csomagokat.
Ezek lehetőségeit átnézve, beállítva minden szép és jó! Köszönöm!
Szuper, örülök hogy sikerült!
Szia!
Ez elég kusza, mi akar lenni a "dummy" csatoló?
Ha erre gondolsz:
$> modprobe dummy
$> ip link add dummy0 type dummy
$> ip link add dummy1 type dummy
$> ip link add dummy2 type dummy
Ezzel nem mész sokra, mert ez a "loopback" -nak felel meg.
L3 csatoló és "localhost only".
Amire te gondolsz(ha jól értem) az így néz ki:
$> ip link add link eth0 name eth0.101 type vlan id 101
$> ip link add link eth0 name eth0.102 type vlan id 102
$> ip link add link eth0 name eth0.103 type vlan id 103
$> ovs-vsctl add-br br101
$> ovs-vsctl add-br br102
$> ovs-vsctl add-br br103
$> ovs-vsctl add-port br101 eth0.101
$> ovs-vsctl add-port br101 eth101
$> ovs-vsctl add-port br102 eth0.102
$> ovs-vsctl add-port br102 eth102
$> ovs-vsctl add-port br103 eth0.103
$> ovs-vsctl add-port br103 eth103
$> ifconfig br101 10.10.101.1/24
$> ifconfig br102 10.10.101.2/24
$> ifconfig br103 10.10.101.3/24
Igazad van, dummy nem jó, veth-el próbáltam/om csinálni. eth0.x nem jó most nekem, a leírásban nem szereplő, a dolgot nem is érintő okból.
Leírom máshogy, nem sikerült korábban jól megfogalmaznom.
Debian stable
Adott linuxos ROUTER, aminek van 4 darab interface.
- eth1 10.10.10.100/24
- eth101 10.10.101.1/24
- eth102 10.10.102.1/24
- eth103 10.10.103.1/24
route-ol és tűzfal.
és adott egy managgelhető SWITCH, három vlan:
1-es port: - van egy trunk portja, ahol a 101,102,103-as vlan id-jú taggelt csomagok jönnek (egy kábelen, itt ilyen hostok vannak.
101 vlan id: 10.10.101.0/24 -es subnet beli ip-vel
102 vlan id: 10.10.102.0/24 -es subnet beli ip-vel
103 vlan id: 10.10.103.0/24 -es subnet beli ip-vel
2-es port: - egy másik portján (kábelen) tag-eletlen csomagok jönnek 10.10.101.0/24 -beli ip-kkel
3-as port: -egy másik portján (kábelen) tag-eletlen csomagok jönnek 10.10.102.0/24 -beli ip-kkel
4-es port: -egy másik portján (kábelen) tag-eletlen csomagok jönnek 10.10.103.0/24 -beli ip-kkel
és
5-ös port: -egy kábelen be van dugva a fenti router is a 10.10.101.1 interface-ével (itt is tag-eletlen csomag jön)
6-os port: - egy kábelen be van dugva a fenti router is a 10.10.102.1 interface-ével (itt is tag-eletlen csomag jön)
7-es port: -egy kábelen be van dugva a fenti router is a 10.10.103.1 interface-ével (itt is tag-eletlen csomag jön)
Szóval ez egy hét portos switch, 7 kábel van bele dugva. A 10.10.101.0/24 -beli ip-k számára a 10.10.101.1 a default gw, azaz mindent a routeren keresztül kell hogy elérjenek ami nem vele egy alhálózatban van. (és így a 10.10.102.0/24, 10.10.103.0/24 is)
KETTŐ A ZEGYBEN. Ezt a két dolgot, fenti router és switch akarom megvalósítani egy Debian stable OS-en. Ennek a rendszernek az interface-ei:
eth1 - erre van mondjuk az internet (router: eth1)
eth0 - ezen jönnek a tag-elt csomagok (switch: 1-es port)
eth101 - ide van bedugva az a kábel, ami mögött 10.10.101.1/24 -beli gépek taggeletlenül (switch: 2-ös port)
eth102 - ide van bedugva az a kábel, ami mögött 10.10.102.1/24 -beli gépek taggeletlenül (switch: 3-os port)
eth103 - ide van bedugva az a kábel, ami mögött 10.10.103.1/24 -beli gépek taggeletlenül (switch: 4-es port)
veth101 - eth101 nem lehet mert virtuális! és mert van is már ilyen, (így veth type). ipje: 10.10.101.1/24 (switch: 5-ös port, router eth101)
veth102 - eth102 nem lehet mert virtuális! és mert van is már ilyen, (így veth type). ipje: 10.10.102.1/24 (switch: 6-ös port, router eth102)
veth103 - eth103 nem lehet mert virtuális! és mert van is már ilyen, (így veth type). ipje: 10.10.103.1/24 (switch: 7-ös port, router 103)
SPYFF írása alapján javítva a saját ötletemet ilyen lenne ha bridge-el:
Nem jártam még sikerrel (valamit elkutyultam és arpos probléma, strorm lett belőle... :),
de itt az xvethY a vethY -nek a párja (az ip a vethY-on van, nem a párján ami a bridge-ben)
Szóval ez egy bridge 3 vlannal. 1 port esetben tagget csomagok jönnek, másik 6 esetében a bejövő csomagokra attól függően hogy melyik port, rárakja a tag-et és ha kimegy rajtuk egy csomag (ami a megfelelő vlanban van, leszedi róla a tag-et (ugyanaz amit az ott bejövőre rakna).
Mint router pedig csak az eredeti eth1-e (internet) és a három veth-es interface-én/ip-jén bejött csomagok között route-ol.
Openvswitchel lenne szép a bridge-et (ez egy klasszikus switch), de ez a "klasszikus" bridge-es megoldás közelebb áll egyelőre hozzám, azzal próbálkozom most.
annak semmi ertele, hogy a routerbe be van kotve a vlanok trunk porton keresztul meg egyesevel is.
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
switchbe
te mondtad:
eth0 - ezen jönnek a tag-elt csomagok (switch: 1-es port)
eth101 - ide van bedugva az a kábel, ami mögött 10.10.101.1/24 -beli gépek taggeletlenül (switch: 2-ös port)
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
Ez egy Linuxon megvalósított szoftveres router és switch egyben.
A switch részében van az a rész amiről beszélünk most és klasszikus switch funkció, gyakori alkalmazás.
akkor felreertettem, mert fenn irtad hogy "adott egy router, es adott egy switch"
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!