Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

Itọnisọna atunṣe to dara fun MetalLB ni ipo L2
Kò pẹ́ sẹ́yìn ni mo dojú kọ iṣẹ́ tó ṣàjèjì gan-an ti ṣíṣètò ipa-ọna fún MetalLB. Ohun gbogbo yoo dara, nitori ... Nigbagbogbo MetalLB ko nilo awọn iṣe afikun eyikeyi, ṣugbọn ninu ọran wa a ni iṣupọ ti o tobi pupọ pẹlu iṣeto nẹtiwọọki ti o rọrun pupọ.

Ninu nkan yii Emi yoo sọ fun ọ bi o ṣe le tunto orisun-orisun ati ipa-ọna eto imulo fun nẹtiwọọki ita ti iṣupọ rẹ.

Emi kii yoo lọ sinu alaye nipa fifi sori ẹrọ ati tunto MetalLB, nitori Mo ro pe o ti ni iriri diẹ. Mo daba lati lọ taara si aaye, eyun eto soke afisona. Nitorinaa a ni awọn ọran mẹrin:

Ọran 1: Nigbati ko si iṣeto ni ti beere

Jẹ ki a wo ọran ti o rọrun.

Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

Iṣeto ipa-ọna ni afikun ko nilo nigbati awọn adirẹsi ti MetalLB ti gbejade wa ninu subnet kanna bi awọn adirẹsi ti awọn apa rẹ.

Fun apẹẹrẹ, o ni subnet kan 192.168.1.0/24, o ni olulana 192.168.1.1, ati awọn apa rẹ gba awọn adirẹsi: 192.168.1.10-30, lẹhinna fun MetalLB o le ṣatunṣe iwọn 192.168.1.100-120 ati rii daju pe wọn yoo ṣiṣẹ laisi iṣeto ni afikun.

Kini idii iyẹn? Nitoripe awọn apa rẹ ti ni atunto awọn ipa-ọna tẹlẹ:

# 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

Ati awọn adirẹsi lati agbegbe kanna yoo tun lo wọn laisi awọn iṣe afikun eyikeyi.

Ọran 2: Nigbati afikun isọdi ba nilo

Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

O yẹ ki o tunto awọn ipa-ọna afikun nigbakugba ti awọn apa rẹ ko ni adiresi IP ti a tunto tabi ipa-ọna si subnet fun eyiti MetalLB ṣe awọn adirẹsi.

Emi yoo ṣe alaye ni alaye diẹ sii. Nigbakugba ti MetalLB ba jade adirẹsi kan, o le ṣe afiwe si iṣẹ iyansilẹ ti o rọrun bii:

ip addr add 10.9.8.7/32 dev lo

San ifojusi si:

  • a) Adirẹsi naa ti wa ni sọtọ pẹlu ìpele kan /32 iyẹn ni pe, ipa ọna kan kii yoo ṣafikun laifọwọyi si subnet fun u (adirẹsi kan ni)
  • b) Adirẹsi naa ti so mọ eyikeyi oju ipade (fun apẹẹrẹ loopback). O tọ lati darukọ nibi awọn ẹya ti akopọ nẹtiwọọki Linux. Laibikita iru wiwo ti o ṣafikun adirẹsi naa, kernel yoo ṣe ilana awọn ibeere arp nigbagbogbo ati firanṣẹ awọn idahun arp si eyikeyi ninu wọn, ihuwasi yii ni a ka pe o tọ ati, pẹlupẹlu, ni lilo pupọ ni iru agbegbe agbara bi Kubernetes.

Ihuwasi yii le jẹ adani, fun apẹẹrẹ nipa ṣiṣe arp ti o muna:

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

Ni ọran yii, awọn idahun arp yoo firanṣẹ nikan ti wiwo naa ba ni adiresi IP kan pato ninu. Eto yii nilo ti o ba gbero lati lo MetalLB ati pe kube-proxy rẹ nṣiṣẹ ni ipo IPVS.

Sibẹsibẹ, MetalLB ko lo ekuro lati ṣe ilana awọn ibeere arp, ṣugbọn o ṣe funrararẹ ni aaye olumulo, nitorinaa aṣayan yii kii yoo ni ipa lori iṣẹ MetalLB.

Jẹ ki a pada si iṣẹ wa. Ti ipa ọna fun awọn adirẹsi ti a ti gbejade ko si lori awọn apa rẹ, ṣafikun siwaju si gbogbo awọn apa:

ip route add 10.9.8.0/24 dev eth1

Ọran 3: Nigbati o nilo ipa-ọna orisun

Iwọ yoo nilo lati tunto ipa-ọna orisun-orisun nigbati o ba gba awọn apo-iwe nipasẹ ẹnu-ọna lọtọ, kii ṣe ọkan ti a tunto nipasẹ aiyipada, nitorinaa awọn idii esi yẹ ki o tun lọ nipasẹ ẹnu-ọna kanna.

Fun apẹẹrẹ, o ni subnet kanna 192.168.1.0/24 igbẹhin si awọn apa rẹ, ṣugbọn o fẹ lati fun awọn adirẹsi ita ni lilo MetalLB. Jẹ ká ro pe o ni ọpọ adirẹsi lati kan subnet 1.2.3.0/24 ti o wa ni VLAN 100 ati pe o fẹ lati lo wọn lati wọle si awọn iṣẹ Kubernetes ni ita.

Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

Nigbati olubasọrọ 1.2.3.4 iwọ yoo ṣe awọn ibeere lati inu subnet ti o yatọ ju 1.2.3.0/24 ati ki o duro fun ohun idahun. Ipade ti o jẹ oluwa lọwọlọwọ fun adirẹsi MetalLB ti o funni 1.2.3.4, yoo gba awọn soso lati awọn olulana 1.2.3.1, ṣugbọn idahun fun u gbọdọ dandan lọ ni ọna kanna, nipasẹ 1.2.3.1.

Niwọn igba ti oju ipade wa ti ni ọna abawọle ti a tunto 192.168.1.1, lẹhinna nipasẹ aiyipada idahun yoo lọ si ọdọ rẹ, kii ṣe si 1.2.3.1, nipasẹ eyiti a gba package.

Bawo ni lati koju ipo yii?

Ni ọran yii, o nilo lati mura gbogbo awọn apa rẹ ni ọna ti wọn ti ṣetan lati sin awọn adirẹsi ita laisi iṣeto ni afikun. Iyẹn ni, fun apẹẹrẹ loke, o nilo lati ṣẹda wiwo VLAN kan lori ipade ni ilosiwaju:

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

Ati lẹhinna ṣafikun awọn ipa-ọna:

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

Jọwọ ṣe akiyesi pe a ṣafikun awọn ipa-ọna si tabili ipa-ọna lọtọ 100 yoo ni awọn ipa-ọna meji nikan ti o ṣe pataki lati fi apo-iwe esi ranṣẹ nipasẹ ẹnu-ọna 1.2.3.1, be sile ni wiwo eth0.100.

Bayi a nilo lati ṣafikun ofin ti o rọrun:

ip rule add from 1.2.3.0/24 lookup 100

eyi ti o sọ ni kedere: ti o ba jẹ pe adiresi orisun ti apo naa wa ninu 1.2.3.0/24, lẹhinna o nilo lati lo tabili afisona 100. Ninu rẹ a ti ṣapejuwe ọna ti yoo firanṣẹ nipasẹ rẹ 1.2.3.1

Ọran 4: Nigbati o nilo ipa-ọna eto imulo

Topology nẹtiwọki jẹ kanna bi ninu apẹẹrẹ ti tẹlẹ, ṣugbọn jẹ ki a sọ pe o tun fẹ lati ni anfani lati wọle si awọn adirẹsi adagun ita gbangba 1.2.3.0/24 lati awọn apoti rẹ:

Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

Iyatọ ni pe nigbati o wọle si adirẹsi eyikeyi ninu 1.2.3.0/24, apo-idahun idahun lu ipade ati pe o ni adirẹsi orisun kan ni ibiti o wa 1.2.3.0/24 yoo wa ni ìgbọràn rán si eth0.100, ṣugbọn a fẹ ki Kubernetes ṣe atunṣe rẹ si podu akọkọ wa, eyiti o ṣe ipilẹṣẹ ibeere atilẹba.

Yiyan iṣoro yii jade lati nira, ṣugbọn o ṣee ṣe ọpẹ si ipa-ọna eto imulo:

Fun oye to dara julọ ti ilana naa, eyi ni aworan atọka netfilter kan:
Itọnisọna atunṣe to dara fun MetalLB ni ipo L2

Ni akọkọ, bi ninu apẹẹrẹ ti tẹlẹ, jẹ ki a ṣẹda tabili itọka afikun kan:

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

Bayi jẹ ki a ṣafikun awọn ofin diẹ si 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

Awọn ofin wọnyi yoo samisi awọn asopọ ti nwọle si wiwo eth0.100, fifi aami si gbogbo awọn apo-iwe pẹlu tag 0x100, awọn idahun laarin asopọ kanna yoo tun jẹ samisi pẹlu aami kanna.

Bayi a le ṣafikun ofin ipa-ọna kan:

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

Iyẹn ni, gbogbo awọn apo-iwe pẹlu adirẹsi orisun kan 1.2.3.0/24 ati tag 0x100 gbọdọ wa ni routed nipa lilo a tabili 100.

Nitorinaa, awọn apo-iwe miiran ti o gba lori wiwo miiran ko ni labẹ ofin yii, eyiti yoo gba wọn laaye lati tan kaakiri nipa lilo awọn irinṣẹ Kubernetes boṣewa.

Ohun kan wa, ni Lainos nibẹ ni ohun ti a pe ni àlẹmọ ipadabọ, eyiti o ba gbogbo rasipibẹri jẹ; o ṣe ayẹwo ti o rọrun: fun gbogbo awọn apo-iwe ti nwọle, o yi adirẹsi orisun ti apo naa pada pẹlu adirẹsi olufiranṣẹ ati ṣayẹwo boya boya soso le lọ kuro nipasẹ wiwo kanna lori eyiti o ti gba, ti kii ba ṣe bẹ, yoo ṣe àlẹmọ jade.

Iṣoro naa ni pe ninu ọran wa kii yoo ṣiṣẹ ni deede, ṣugbọn a le pa a:

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

Jọwọ ṣe akiyesi pe aṣẹ akọkọ n ṣakoso ihuwasi agbaye ti rp_filter; ti ko ba jẹ alaabo, aṣẹ keji kii yoo ni ipa kankan. Sibẹsibẹ, awọn atọkun miiran yoo wa pẹlu rp_filter ṣiṣẹ.

Ni ibere ki o má ba fi opin si iṣẹ ti àlẹmọ patapata, a le lo imuse rp_filter fun netfilter. Lilo rpfilter bi module iptables, o le tunto awọn ofin to rọ, fun apẹẹrẹ:

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

jeki rp_filter lori wiwo eth0.100 fun gbogbo awọn adirẹsi ayafi 1.2.3.0/24.

orisun: www.habr.com

Fi ọrọìwòye kun