Fine-akor routage pou MetalLB nan mòd L2

Fine-akor routage pou MetalLB nan mòd L2
Sa pa gen lontan mwen te fè fas ak yon travay trè etranj nan mete kanpe routage pou MetalLB. Tout bagay ta byen, paske... Anjeneral MetalLB pa mande pou okenn aksyon adisyonèl, men nan ka nou an nou gen yon gwoup jistis gwo ak yon konfigirasyon rezo trè senp.

Nan atik sa a mwen pral di w kijan pou konfigirasyon routage ki baze sou sous ak politik pou rezo ekstèn gwoup ou a.

Mwen pa pral antre nan detay sou enstale ak konfigirasyon MetalLB, paske mwen sipoze ou deja gen kèk eksperyans. Mwen sijere ale tou dwat nan pwen an, sètadi mete kanpe routage. Se konsa, nou gen kat ka:

Ka 1: Lè pa gen okenn konfigirasyon obligatwa

Ann gade nan yon ka senp.

Fine-akor routage pou MetalLB nan mòd L2

Konfigirasyon routage adisyonèl pa obligatwa lè adrès MetalLB te bay yo nan menm subnet ak adrès nœuds ou yo.

Pou egzanp, ou gen yon subnet 192.168.1.0/24, li gen yon routeur 192.168.1.1, epi nœuds ou yo resevwa adrès: 192.168.1.10-30, Lè sa a, pou MetalLB ou ka ajiste ranje a 192.168.1.100-120 epi asire w ke yo pral travay san okenn konfigirasyon adisyonèl.

Poukisa se sa? Paske nœuds ou yo deja gen wout konfigirasyon:

# ip route
default via 192.168.1.1 dev eth0 onlink 
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.10

Ak adrès ki soti nan menm seri a pral reitilize yo san okenn aksyon adisyonèl.

Ka 2: Lè personnalisation adisyonèl yo mande

Fine-akor routage pou MetalLB nan mòd L2

Ou ta dwe konfigirasyon wout adisyonèl chak fwa nœuds ou yo pa gen yon adrès IP konfigirasyon oswa wout nan sou-rezo a pou ki MetalLB pwoblèm adrès.

Mwen pral eksplike nan yon ti kras plis detay. Chak fwa MetalLB bay yon adrès, li ka konpare ak yon devwa senp tankou:

ip addr add 10.9.8.7/32 dev lo

Peye atansyon sou:

  • a) Adrès la asiyen ak yon prefiks /32 sa vle di, yon wout pa pral otomatikman ajoute nan subnet la pou li (se jis yon adrès)
  • b) Adrès la tache ak nenpòt koòdone ne (pa egzanp loopback). Li vo mansyone isit la karakteristik yo nan pil rezo Linux la. Pa gen pwoblèm nan ki koòdone ou ajoute adrès la, nwayo a ap toujou trete demann arp epi voye repons arp nan nenpòt nan yo, konpòtman sa a konsidere kòm kòrèk epi, anplis, se byen lajman itilize nan yon anviwònman dinamik tankou Kubernetes.

Konpòtman sa a ka Customized, pou egzanp lè w pèmèt strik arp:

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

Nan ka sa a, repons arp yo pral voye sèlman si koòdone a klèman gen yon adrès IP espesifik. Anviwònman sa a obligatwa si w gen plan pou itilize MetalLB epi kube-proxy ou ap kouri nan mòd IPVS.

Sepandan, MetalLB pa sèvi ak nwayo a pou trete demann arp, men fè li tèt li nan espas itilizatè, kidonk opsyon sa a pa pral afekte operasyon MetalLB.

Ann retounen nan travay nou an. Si wout pou adrès yo bay yo pa egziste sou nœuds ou yo, ajoute li davans nan tout nœuds yo:

ip route add 10.9.8.0/24 dev eth1

Ka 3: Lè ou bezwen routage ki baze sou sous

W ap bezwen konfigirasyon routage ki baze sou sous lè ou resevwa pake atravè yon pòtay separe, pa youn nan configuré pa default, kidonk pake repons yo ta dwe tou ale nan pòtay la menm.

Pou egzanp, ou gen menm subnet la 192.168.1.0/24 dedye a nœuds ou yo, men ou vle bay adrès ekstèn lè l sèvi avèk MetalLB. Ann sipoze ou gen plizyè adrès ki soti nan yon subnet 1.2.3.0/24 ki sitiye nan VLAN 100 epi ou vle sèvi ak yo pou jwenn aksè nan sèvis Kubernetes deyò.

Fine-akor routage pou MetalLB nan mòd L2

Lè w kontakte 1.2.3.4 ou pral fè demann ki soti nan yon sous-rezo diferan pase 1.2.3.0/24 epi tann yon repons. Ne ki se kounye a mèt pou adrès MetalLB bay la 1.2.3.4, pral resevwa pake a soti nan routeur la 1.2.3.1, men repons lan pou li dwe nesesèman ale menm wout la, nan 1.2.3.1.

Depi ne nou an deja gen yon pòtay default configuré 192.168.1.1, Lè sa a, pa default repons lan pral ale nan li, epi yo pa 1.2.3.1, atravè ki nou te resevwa pakè a.

Ki jan fè fas ak sitiyasyon sa a?

Nan ka sa a, ou bezwen prepare tout nœuds ou yo nan yon fason ke yo pare pou sèvi adrès ekstèn san konfigirasyon adisyonèl. Sa vle di, pou egzanp ki anwo a, ou bezwen kreye yon koòdone VLAN sou ne davans:

ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up

Apre sa, ajoute wout:

ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100

Tanpri sonje ke nou ajoute wout nan yon tab routage separe 100 li pral genyen sèlman de wout ki nesesè pou voye yon pake repons atravè pòtay la 1.2.3.1, ki chita dèyè koòdone a eth0.100.

Koulye a, nou bezwen ajoute yon règ senp:

ip rule add from 1.2.3.0/24 lookup 100

ki klèman di: si adrès sous pake a nan 1.2.3.0/24, Lè sa a, ou bezwen sèvi ak tab la routage 100. Nan li nou te deja dekri wout la ki pral voye l 'nan 1.2.3.1

Ka 4: Lè ou bezwen routage ki baze sou politik

Topoloji rezo a se menm jan ak egzanp anvan an, men ann di ou vle tou pou jwenn aksè nan adrès pisin ekstèn. 1.2.3.0/24 soti nan gous ou yo:

Fine-akor routage pou MetalLB nan mòd L2

Singularité a se ke lè aksè nan nenpòt adrès nan 1.2.3.0/24, pake repons lan frape ne la epi li gen yon adrès sous nan seri a 1.2.3.0/24 yo pral obeyisan voye bay eth0.100, men nou vle Kubernetes redireksyon li nan premye gous nou an, ki te pwodwi demann orijinal la.

Rezoud pwoblèm sa a te vin difisil, men li te vin posib grasa wout ki baze sou politik:

Pou yon pi bon konpreyansyon sou pwosesis la, isit la se yon dyagram blòk netfilter:
Fine-akor routage pou MetalLB nan mòd L2

Premyèman, tankou nan egzanp anvan an, ann kreye yon tab routage adisyonèl:

ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100

Koulye a, ann ajoute kèk règ nan iptables:

iptables -t mangle -A PREROUTING -i eth0.100 -j CONNMARK --set-mark 0x100
iptables -t mangle -A PREROUTING  -j CONNMARK --restore-mark
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j RETURN
iptables -t mangle -A POSTROUTING -j CONNMARK --save-mark

Règ sa yo pral make koneksyon fèk ap rantre nan koòdone a eth0.100, make tout pake ak tag la 0x100, repons ki nan menm koneksyon an pral make tou ak menm tag la.

Koulye a, nou ka ajoute yon règ routage:

ip rule add from 1.2.3.0/24 fwmark 0x100 lookup 100

Sa vle di, tout pake ki gen yon adrès sous 1.2.3.0/24 ak tag 0x100 dwe dirije lè l sèvi avèk yon tab 100.

Kidonk, lòt pake ki resevwa sou yon lòt koòdone yo pa sijè a règ sa a, ki pral pèmèt yo dwe dirije yo lè l sèvi avèk zouti Kubernetes estanda.

Gen yon lòt bagay ankò, nan Linux gen yon sa yo rele filtè chemen ranvèse, ki gate tout bagay la; li fè yon chèk senp: pou tout pake fèk ap rantre, li chanje adrès sous pake a ak adrès moun k ap voye a epi tcheke si wi ou non. pake a ka kite nan menm koòdone kote li te resevwa a, si se pa sa, li pral filtre li.

Pwoblèm lan se ke nan ka nou an li pa pral travay kòrèkteman, men nou ka enfim li:

echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0.100/rp_filter

Tanpri sonje ke premye kòmandman an kontwole konpòtman global rp_filter; si li pa enfim, dezyèm kòmandman an p ap gen okenn efè. Sepandan, entèfas ki rete yo ap rete ak rp_filter aktive.

Nan lòd pa konplètman limite operasyon an nan filtè a, nou ka itilize aplikasyon an rp_filter pou netfilter. Sèvi ak rpfilter kòm yon modil iptables, ou ka configured règ byen fleksib, pou egzanp:

iptables -t raw -A PREROUTING -i eth0.100 -d 1.2.3.0/24 -j RETURN
iptables -t raw -A PREROUTING -i eth0.100 -m rpfilter --invert -j DROP

pèmèt rp_filter sou koòdone la eth0.100 pou tout adrès eksepte 1.2.3.0/24.

Sous: www.habr.com

Add nouvo kòmantè