Ntugharị dị mma maka MetalLB na ọnọdụ L2

Ntugharị dị mma maka MetalLB na ọnọdụ L2
N'oge na-adịbeghị anya, enwere m ọrụ pụrụ iche nke ịtọ ntọala maka MetalLB. Ihe niile ga-adị mma, n'ihi na ... Ọtụtụ mgbe, MetalLB anaghị achọ omume ọzọ, mana n'ọnọdụ anyị, anyị nwere nnukwu ụyọkọ nwere nhazi netwọkụ dị mfe.

N'isiokwu a, m ga-agwa gị otu esi ahazi isi mmalite na usoro iwu maka netwọk mpụga nke ụyọkọ gị.

Agaghị m abanye n'ime nkọwa gbasara ịwụnye na ịhazi MetalLB, ebe m chere na ị nwere ahụmịhe. M na-atụ aro na-aga ozugbo na isi ihe, ya bụ ịtọ routing. Ya mere, anyị nwere ikpe anọ:

Ikpe 1: Mgbe enweghị nhazi achọrọ

Ka anyị leba anya n'okwu dị mfe.

Ntugharị dị mma maka MetalLB na ọnọdụ L2

Achọghị nhazi ụzọ ụzọ agbakwunyere mgbe adreesị MetalLB nyere nọ n'otu ntanetị ahụ dị na adreesị nke ọnụ gị.

Dịka ọmụmaatụ, ị nwere subnet 192.168.1.0/24, ọ nwere a rawụta 192.168.1.1, na ọnụ gị na-enweta adreesị: 192.168.1.10-30, mgbe ahụ maka MetalLB ị nwere ike ịhazigharị oke 192.168.1.100-120 ma jide n'aka na ha ga-arụ ọrụ na-enweghị nhazi ọ bụla ọzọ.

Gịnị kpatara nke ahụ? N'ihi na ọnụ ụzọ gị enweelarị ụzọ ahaziri:

# 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

Na adreesị ndị si n'otu nso ga-ejighachi ha na-enweghị ihe ọ bụla ọzọ omume.

Ikpe 2: Mgbe achọrọ mmezi ọzọ

Ntugharị dị mma maka MetalLB na ọnọdụ L2

Ịkwesịrị ịhazi ụzọ ndị ọzọ mgbe ọ bụla ọnụ gị enweghị adreesị IP ahaziri ma ọ bụ ụzọ gaa na subnet nke MetalLB na-enye adreesị.

Aga m akọwa na ntakịrị nkọwa. Mgbe ọ bụla MetalLB wepụtara adreesị, enwere ike iji ya tụnyere ọrụ dị mfe dịka:

ip addr add 10.9.8.7/32 dev lo

Lezienụ anya na:

  • a) Enyere adreesị ahụ nwere prefix /32 ya bụ, a gaghị etinye ụzọ na-akpaghị aka na subnet maka ya (ọ bụ naanị adreesị)
  • b) Ejikọnyere adreesị ahụ na oghere ọnụ ọ bụla (dịka ọmụmaatụ loopback). Ọ bara uru ịkọwa ebe a njirimara nke nchịkọta netwọkụ Linux. N'agbanyeghị ụdị interface ị gbakwunyere adreesị na, kernel ga-edozi arịrịọ arp mgbe niile wee ziga nzaghachi arp na nke ọ bụla n'ime ha, a na-ewere omume a dị ka ihe ziri ezi na, ọzọkwa, a na-ejikarị ya eme ihe na gburugburu ebe dị ike dị ka Kubernetes.

Enwere ike ịhazi omume a, dịka ọmụmaatụ site n'ịkwado arp siri ike:

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

N'okwu a, azịza arp ga-ezite naanị ma ọ bụrụ na interface ahụ nwere adreesị IP akọwapụtara nke ọma. Achọrọ ntọala a ma ọ bụrụ na ị na-eme atụmatụ iji MetalLB na kube-proxy gị na-agba na ọnọdụ IPVS.

Agbanyeghị, MetalLB anaghị eji kernel hazie arịrịọ arp, mana ọ na-eme ya n'onwe ya na oghere onye ọrụ, yabụ nhọrọ a agaghị emetụta ọrụ MetalLB.

Ka anyị laghachi n'ọrụ anyị. Ọ bụrụ na ụzọ maka adreesị ndị enyereghị na ọnụ gị, tinye ya n'ihu na ọnụ ụzọ niile:

ip route add 10.9.8.0/24 dev eth1

Ikpe 3: Mgbe ị chọrọ ụzọ ntụgharị sitere na isi mmalite

Ọ ga-adị mkpa ka ị hazie okporo ụzọ dabere na isi mmalite mgbe ị na-enweta ngwugwu site n'ọnụ ụzọ dị iche, ọ bụghị nke ahaziri na ndabara, yabụ ngwugwu nzaghachi kwesịkwara ịga n'otu ọnụ ụzọ ahụ.

Dịka ọmụmaatụ, ị nwere otu subnet 192.168.1.0/24 raara onwe ya nye nodes gị, mana ịchọrọ ịnye adreesị mpụga site na iji MetalLB. Ka anyị were ya na ị nwere ọtụtụ adreesị sitere na subnet 1.2.3.0/24 dị na VLAN 100 ma ịchọrọ iji ha nweta ọrụ Kubernetes na mpụga.

Ntugharị dị mma maka MetalLB na ọnọdụ L2

Mgbe ị na-akpọtụrụ 1.2.3.4 ị ga na-arịọ arịrịọ site na subnet dị iche karịa 1.2.3.0/24 chere maka azịza. Ọnụ nke bụ nna ukwu maka adreesị MetalLB nyere 1.2.3.4, ga-enweta ngwugwu site na rawụta 1.2.3.1, ma azịza ya ga-abụrịrị na-aga otu ụzọ, site 1.2.3.1.

Ebe ọnụ ụzọ anyị enweelarị ọnụ ụzọ ndabara ahaziri 192.168.1.1, mgbe ahụ site na ndabara nzaghachi ga-aga ya, ọ bụghị 1.2.3.1, site na nke anyị nwetara ngwugwu.

Kedu ka esi esi nagide ọnọdụ a?

N'okwu a, ịkwesịrị ịkwadebe ọnụ gị niile n'ụzọ na ha dị njikere ijere adreesị mpụga na-enweghị nhazi ọzọ. Ya bụ, maka ihe atụ dị n'elu, ịkwesịrị ịmepụta interface VLAN na ọnụ ụzọ tupu oge eruo:

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

Ma tinyezie ụzọ:

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

Biko mara na anyị na-agbakwunye ụzọ na tebụl ntụgharị dị iche 100 ọ ga-enwe naanị ụzọ abụọ dị mkpa iji zipu ngwugwu nzaghachi site na ọnụ ụzọ ámá 1.2.3.1, dị n'azụ interface eth0.100.

Ugbu a, anyị kwesịrị itinye iwu dị mfe:

ip rule add from 1.2.3.0/24 lookup 100

nke na-ekwu hoo haa: ọ bụrụ na adreesị isi mmalite nke ngwugwu ahụ abanyela 1.2.3.0/24, mgbe ahụ ịkwesịrị iji tebụl ntụgharị 100. N'ime ya anyị akọwaworị ụzọ nke ga-esi na ya gafee 1.2.3.1

Ikpe 4: Mgbe ị chọrọ nhazi usoro dabere na iwu

Netwọk topology bụ otu ihe ahụ dị na ihe atụ gara aga, mana ka anyị kwuo na ị nwekwara ike ịnweta adreesị ọdọ mmiri mpụga. 1.2.3.0/24 site na pọd gị:

Ntugharị dị mma maka MetalLB na ọnọdụ L2

Ihe dị iche bụ na mgbe ị na-abanye adreesị ọ bụla 1.2.3.0/24, ngwugwu nzaghachi na-adaba ọnụ ma nwee adreesị isi mmalite na nso 1.2.3.0/24 a ga-eji nrubeisi zigara ya eth0.100, mana anyị chọrọ ka Kubernetes bugharịa ya na pọd mbụ anyị, nke mere arịrịọ mbụ.

Ịdozi nsogbu a tụgharịrị bụrụ ihe siri ike, mana ọ ga-ekwe omume n'ihi usoro usoro iwu dabere:

Maka nghọta ka mma nke usoro a, ebe a bụ eserese netfilter block:
Ntugharị dị mma maka MetalLB na ọnọdụ L2

Nke mbụ, dị ka ọ dị na ihe atụ gara aga, ka anyị mepụta tebụl ntụgharị ọzọ:

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

Ugbu a, ka anyị tinye iwu ole na ole na 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

Iwu ndị a ga-akara njikọ mbata na interface ahụ eth0.100, na-eji mkpado ahụ akara ngwugwu niile 0x100, nzaghachi n'ime otu njikọ ga-ejikwa otu mkpado akara.

Ugbu a, anyị nwere ike itinye iwu ntụgharị:

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

Ya bụ, ngwugwu niile nwere adreesị isi mmalite 1.2.3.0/24 na mkpado 0x100 a ga-eji tebụl mee ihe 100.

Ya mere, ngwugwu ndị ọzọ enwetara na interface ọzọ adịghị n'okpuru iwu a, nke ga-eme ka ha jiri ngwá ọrụ Kubernetes ọkọlọtọ mee ihe.

Enwere otu ihe ọzọ, na Linux enwere ihe a na-akpọ reverse ụzọ nzacha, nke na-emebi ihe niile; ọ na-eme nlele dị mfe: maka ngwugwu niile na-abata, ọ na-agbanwe adreesị isi mmalite nke ngwugwu ahụ na adreesị onye zitere wee lelee ma ngwugwu ahụ nwere ike ịpụ site na otu interface nke enwetara ya, ọ bụrụ na ọ bụghị, ọ ga-enyocha ya.

Nsogbu bụ na n'ọnọdụ anyị ọ gaghị arụ ọrụ nke ọma, mana anyị nwere ike gbanyụọ ya:

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

Biko mara na iwu nke mbụ na-achịkwa omume zuru ụwa ọnụ nke rp_filter; ọ bụrụ na enweghị nkwarụ, iwu nke abụọ agaghị enwe mmetụta ọ bụla. Agbanyeghị, oghere ndị fọdụrụ ga-anọgide na-enyere rp_filter aka.

Ka ọ ghara imebi ọrụ nke nzacha kpamkpam, anyị nwere ike iji mmejuputa rp_filter maka netfilter. Iji rpfilter dị ka modul iptables, ị nwere ike hazie iwu na-agbanwe agbanwe, dịka ọmụmaatụ:

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

mee rp_filter na interface ahụ eth0.100 maka adreesị niile ewezuga 1.2.3.0/24.

isi: www.habr.com

Tinye a comment