αα·αααΌαααα»ααααΆααα αααα»αααΆαααααααα»αααΉαααΆαααΆααα·αααααααΆαα½ααααα»αααΆαααα‘αΎα routing αααααΆαα MetalLBα α’αααΈαααΉαααα’ ααααα... ααΆααααααΆ MetalLB αα·ααααααΌαα±ααααΆααααααααΆααααααααα ααα»αααααααα»αααααΈααααααΎα ααΎαααΆαα
αααααααααααααΆαα½αααΉαααΆαααααααα
ααΆαααααααααααααΆαααααΆαααααααα»αα
αα αααα»αα’αααααααα αααα»αααΉαααααΆααα’αααααΈααααααααααα ααΆααααααααααααΌαααα’ααααΎααααα αα·ααααααΆαααααα’ααααΎαααααΆααααααΆαααααααΆαααΆααααα ααα αααααααααα’αααα
αααα»αααΉααα·ααα·ααΆααααα’α·αα’αααΈααΆαααα‘αΎα αα·αααααααα ααΆαααααααα MetalLB αα ααααααααα»αααααααααΆα’αααααΆααααα·αααααααααα αΎαα αααα»αααααΎα±αααα αααααα ααα»α αααααΊααΆααααααααααΌαα ααΌα ααααααΎαααΆααα½αααααΈα
ααααΈααΈ 1: αα αααααααα·αααΆαααΆαααααααα ααΆααααααααααααΌαααΆαααΆαααΆα
ααΌααααα‘ααααΎαααααΈααΆαααααα½αα
ααΆαααααααα ααΆααααααααααααΌααααααααα·αααααΌαααΆαααΆαααΆααα αα ααααααα’αΆααααααΆααααα ααααα MetalLB αααα·ααα αααα»ααααααΆαααααΌα ααααΆααΆαα½αααΉαα’αΆααααααΆαααααααΆααααααα’αααα
α§ααΆα ααα α’αααααΆααααααΆααα 192.168.1.0/24
ααΆααΆαααααααα 192.168.1.1
α αΎαααααΆααααααα’αααααα½αααΆαα’αΆααααααΆαα 192.168.1.10-30
αααααΆαααααααααΆαα MetalLB α’αααα’αΆα
αααααααΌααα½αααΆαα 192.168.1.100-120
α αΎαααααΌαααααΆααααΆαα½αααααΉαααααΎαααΆααααααααΆαααΆααααααααααααααΆαα½αα‘αΎαα
α ααα»α’αααΈααΆαααΆβα’ααα αΉα? αααααΆαααααααΆααααααα’αααααΆαααααααα ααΆααααααααααααΌααα½α α αΎαα
# 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
α αΎαα’αΆααααααΆαααΈαα½αααΌα ααααΆααΉαααααΎαα½αααΆα‘αΎααα·ααααααααΆααααααααΆαααααααααΆαα½αα‘αΎαα
ααααΈααΈ 2: αα ααααααααΆαααααΌαααΆαααααααααααααααΌαααΆαααΆαααΆα
α’ααααα½αααααααααα ααΆααααααααααααΌααααααααα αααααΆαααααααΆααααααα’ααααα·αααΆαα’αΆααααααΆα IP αααααΆαααααααα ααΆαααααααα α¬ααααΌααα ααΆαααααααΆαααααα MetalLB α ααα’αΆααααααΆαα
αααα»αααΉααααααααααα’α·αααααα·α αααα αα αααααΆααα MetalLB αααα ααα’αΆααααααΆα ααΆα’αΆα αααααααααα ααΉααα·α αα ααΆαααΆααααααΌα ααΆα
ip addr add 10.9.8.7/32 dev lo
ααα α·ααααα»αααΆααα ααααα
- a) α’αΆααααααΆαβααααΌαβααΆαβαααααβαααβαα»ααααα
/32
αααααΊααααΌααα½αααΉααα·αααααΌαααΆααααααααααααααααααααααα·αα αααααΆααααααααΆααααΆαα (ααΆααααΆααααααΆα’αΆααααααΆα) - b) α’αΆααααααΆαααααΌαααΆαααααΆαααα α ααα»α αααααΆαα node ααΆαα½α (α§ααΆα ααα loopback)α ααΆααΊααΆααααααα·ααΆααα ααΈαααα’αααΈαααααααα·αααααααααααααΆαααΈαα»α α αα·αααΆα ααα»α αααααΆααααΆαα½ααααα’αααααααααα’αΆααααααΆααα ααΊαααααΉαααααΎαααΆαααααΎ arp ααΆαα·α αα α αΎαααααΎααΆαααααΎααα arp αα ααΆαααα½αααΆααΆαα½α α₯αα·ααΆαααααααααΌαααΆαα αΆαααα»αααΆααααΉαααααΌα α αΎαααΎαααΈααααα ααα ααααΌαααΆαααααααΎαααΆαααΌααααΌααΆααα αααα»αααα·ααΆααΆαααΆαααααααΌα ααΆ Kubernetes α
α₯αα·ααΆαααααα’αΆα ααααΌαααΆαααααΌαααΆααααα α§ααΆα ααααααααΎα arp ααΉαααΉαα
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
αααα»αααααΈααα ααΆαααααΎααα arp ααΉαααααΌαααΆαααααΎαα»αααααΆααα ααα»α αααααΆααααΆαα’αΆααααααΆα IP ααΆααααΆααααΆααααΆαααα½αα ααΆαααααααααααααΌαααΆαααΆαααΆα ααααα·αααΎα’αααααΆαααααααααααΎ MetalLB α αΎα kube-proxy ααααα’ααααααα»αααααΎαααΆααααα»ααααα IPVSα
ααααααΆαααΆααααα MetalLB αα·αααααΎααΊαααααΎααααΈααααΎαααΆαααααΎ arp αα ααα»ααααααααΎααΆααααααα½αααΆααααΆαααααα»αα αααααα’αααααααΎααααΆαα ααΌα αααααααααΎααααααΉααα·ααααααΆαααααααααα·ααααα·ααΆααααα MetalLB ααα
α αΌαααΎααααααααα ααΆααα·α αα ααααααΎαα ααααα·αααΎααααΌααααααΆααα’αΆααααααΆααααααΆαα αααα·αααΆααα ααΎααααΆααααααα’ααααα ααΌαααααααααΆααΆαα»ααα ααΆααααααΆααααΆααα’ααα
ip route add 10.9.8.0/24 dev eth1
ααααΈααΈ 3: αα ααααααα’αααααααΌαααΆαααΆααααααΌαααΆαααααα
α’αααααΉαααααΌαααααααα ααΆααααααααααΆααααααΌαααΆαααααα αα αααα’αααααα½ααααα ααααααααΆαααΆααααα αααααααΌαααΆα ααααα‘αα αα·ααααααΆααΆαααααααα ααΆααααααααααΆαααααΆαααΎααα ααΌα αααααααα ααααααΎααααααα½αααααααααΆααα αααααααΆαααΌα ααααΆαααα
α§ααΆα ααα α’αααααΆααααααΆαααααΌα
ααααΆα 192.168.1.0/24
α§αααα·ααααααααΆααααααα’ααα ααα»ααααα’αααα
ααα
ααα’αΆααααααΆαααΆααααα
αααααααΎ MetalLB α α
αΌααααααααΆα’αααααΆαα’αΆααααααΆαα
αααΎαααΈαααααΆααα 1.2.3.0/24
αααααΆαααΈααΆαααα
VLAN 100 α αΎαα’αααα
ααααααΎαα½αααΆααΎααααΈα
αΌαααααΎααααΆαααα Kubernetes ααΆααααα
α
αα
αααααΆαααα 1.2.3.4
α’αααααΉαααααΎααΆαααααΎαα»αααΈαααααΆααααααααααΈ 1.2.3.0/24
α αΎααααα
αΆαα
ααααΎαα ααααΆααααααα
αα
α»ααααααααΆαααααααΆααα’αΆααααααΆααααα
ααααα MetalLB 1.2.3.4
ααΉαααα½αααΆααααα
ααααααααΆαααΈααααααα 1.2.3.1
ααα»ααααα
ααααΎααααααΆααααΆααααααΌααααα
ααααΌαααΌα
ααααΆ ααααααΆαα 1.2.3.1
.
αααααΆαααααΆααααααααΎαααΆαα
αααααααΌαααααΆαααΎααααααΆαααααααα
ααΆαααααααααα½α
α αΎα 192.168.1.1
αααααΆααααααΆαααααΆαααΎα ααΆαααααΎαααααΉααα
ααΆαα αα·ααα·ααα
1.2.3.1
ααΆααααααΆααααααΎαααΆαααα½ααααα
ααα
ααΎααααΎααΌα ααααα ααΎααααΈααααααααΉαααααΆαααΆαααα?
αααα»αααααΈααα α’αααααααΌααααα αααααΆααααααα’αααααΆααα’ααααΆαααααααααα½αααΆααααααα½α ααΆααααΎααααΈαααααΎα’αΆααααααΆαααΆααααα ααααα·αααΆαααΆααααααααααααα αααααΊαααααΆααα§ααΆα αααααΆαααΎ α’αααααααΌααααααΎαα ααα»α αααααΆαα VLAN αα ααΎ node ααΆαα»αα
ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up
α αΎααααααΆααααααααααααααΌαα
ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100
ααΌαα
αααΆαααΆααΎαααααααααααΌααα
ααΆααααΆααΆαααΆαααααΌαααΆα
ααααα‘αα 100
ααΆααΉαααΆαααααΌαααΈαααα»ααααααααα
αΆαααΆα
αααΎααααΈααααΎαααα
ααααααΎαααααΆααααα
αααααααΌα 1.2.3.1
αααααΆαααΈααΆαααα
ααΆααααααα
ααα»α
αααααΆαα eth0.100
.
α₯α‘αΌαααΎαααααΌαααααααα αααΆααααΆααααα
ip rule add from 1.2.3.0/24 lookup 100
ααααα·ααΆααααΆαα
αααΆααα ααααα·αααΎα’αΆααααααΆαααααααααααααα
ααααααααΆαααΊαα
αααα»α 1.2.3.0/24
αααααΆααααα’αααααααΌαααααΎααΆααΆαααΆαααααΌα 100
. αααα»αβαααβααΎαβααΆαβαααβααΆααβαα½α
βα αΎαβααΌαβααααΌαβαααβααΉαβαααααΌαβααΆααβαα
βααΆα 1.2.3.1
ααααΈααΈ 4: αα ααααααα’αααααααΌαααΆαααΆααααααααααΌααααααα’ααααΎαααααΆααα
αααααΆα topology ααΊααΌα
ααααΆααΉαα§ααΆα αααααΈαα»αααα ααα»ααααααΌααα·ααΆαααΆα’αααααα
ααα’αΆα
α
αΌαααααΎα’αΆααααααΆαα’αΆαααΆααααα
ααΆαααα 1.2.3.0/24
ααΈααααααααα’αααα
ααΆααα·ααααααααΊααΆαα
ααααααα
αΌααα
ααΆααα’αΆααααααΆαααΆαα½ααα
αααα»α 1.2.3.0/24
αααα
ααααααΎααααααααααΆαα αα·αααΆαα’αΆααααααΆαααααααα
αααα»ααα½α 1.2.3.0/24
ααΉαααααΌαααΆαααααΎαααααααααΆα eth0.100
ααα»ααααααΎαα
ααα±αα Kubernetes ααααΌααα·αααΆαα
ααααααΌαααααααΎα ααααααααΎαααααΎααΎαα
ααΆααααααααΆααααα αΆαααααΆαααααΆααα ααΆααΆααα·ααΆα ααα»ααααααΆα’αΆα αα αα½α αααααΆαααΆααααααααααΌαααα’ααααΎαααααΆαααα
αααααΆααααΆααααααΉαααΆααααα
αααΆααα’αααΈααααΎαααΆααααααΊααΆααααΆααααΆααααα»α netfilterα
ααΆααααΌα ααΌα αααα»αα§ααΆα ααααα»α ααααααααΎαααΆααΆαααΆαααααΌαααααααα
ip route add 1.2.3.0/24 dev eth0.100 table 100
ip route add default via 1.2.3.1 table 100
α₯α‘αΌααααααΌαααααααα αααΆαααα½αα ααα½ααα 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
α
αααΆααααΆαααααααΉααααααΆααααΆααααααΆααα
αΌααα
ααΆααα
ααα»α
αααααΆαα eth0.100
αααααΆαααααα
ααααααααΆαααΆααα’αααααααααΆα 0x100
ααΆαααααΎααααα
αααα»αααΆααααααΆααααΌα
ααααΆααααΉαααααΌαααΆααααααΆαααααααααΆαααΌα
ααααΆαααα
α₯α‘αΌαβααα ααΎαβα’αΆα βααααααβα αααΆααβαααααβααααΌαα
ip rule add from 1.2.3.0/24 fwmark 0x100 lookup 100
αααααΊαααα
ααααΆααα’αααααααΆαα’αΆααααααΆαααααα 1.2.3.0/24
αα·αααααΆα 0x100
ααααΌαααααααΎαααΆααααααααΎααΆααΆα 100
.
ααΌα αααα αααα ααααααααΆααααααααααααααα½αααΆααα ααΎα ααα»α αααααΆαααααααααααα·ααααα·ααααααα αααΆααααααα αααααΉαα’αα»ααααΆαα±αααα½αααΆααααΌαααΆααααααΌααααααααΎα§ααααα Kubernetes αααααααΆαα
ααΆαααΏααα½αααααααααα αα αααα»αααΈαα»α ααΆαα’αααΈαααααα α ααΆ αααααααααΌααααα αααΆα αααααααααΆαα’αααΈαααΆααα’αα ααΆααααΎαααΆαααΆααααα½ααα·αα·αααααΆααααα αααααΆαααααα ααααααααΆαα αΌαααΆααα’αα ααΆααααΆααααααΌαα’αΆααααααΆαααααααααααα ααααααααΆαααΆαα½αα’αΆααααααΆαα’αααααααΎ αα·ααα·αα·αααααΎαααΆααΎ αααα ααααααααΆαα’αΆα αα»αααΆααααα ααα»α αααααΆααααΌα ααααΆαααααΆααααΌαααΆαααα½α ααΎαα·αααΌα αααααα ααΆααΉαααααααΆα ααα
αααα αΆααΊααΆαααα»αααααΈααααααΎαααΆααΉααα·αααααΎαααΆαααααΉαααααΌααα ααα»ααααααΎαα’αΆα αα·αααΆααΆαα
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth0.100/rp_filter
ααΌαα αααΆαααΆααΆααααααααΆααΈαα½ααααααααααα₯αα·ααΆααααααααα rp_filter ααααα·αααΎααΆαα·αααααΌαααΆααα·ααα ααΆααααααααΆααΈααΈαααΉααα·αααΆαα₯αααα·ααααα ααααααΆαααΆααααα α ααα»α αααααΆααααααα αααααΉααα ααααΆαααΆαα½α rp_filter ααααΌαααΆαααΎαα
ααΎααααΈαα·ααααααααααα·ααααα·ααΆααααααααααααΆαααααα»α ααΎαα’αΆα ααααΎααΆαα’αα»αααα rp_filter αααααΆαα netfilter α αααααααΎ rpfilter ααΆαααΌαα»α iptables α’αααα’αΆα ααααααα ααΆααααααααα αααΆαααααα’αΆα ααααααααΆα α§ααΆα αααα
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
ααΎα rp_filter αα
ααΎα
ααα»α
αααααΆαα eth0.100
αααααΆααα’αΆααααααΆαααΆααα’ααααΎαααααα 1.2.3.0/24
.
ααααα: www.habr.com