ื ืื ืืึทื ื ืฆืืจืืง ืืื ืืื ืืขืืืขื ืคืืืกื ืืื ืึท ืืืืขืจ ืืืืขืืืืื ืืืขื ืึทืจืืขื ืคืื ืืึทืฉืืขืืืงื ืจืืืื ื ืคึฟืึทืจ 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) ืื ืึทืืจืขืก ืืื ืึทืืึทืืฉื ืฆื ืงืืื ื ืึธืืข ืฆืืืื ื (ืืืฉื ืืืคึผืืึทืงืง). ืขืก ืืื ืืืขืจื ืืขืจืืึธื ืขื ืืึธ ืื ืคึฟืขืึดืงืืืื ืคืื ืื ืืื ืืงืก ื ืขืฅ ืึธื ืืืืื. ื ืื ืงืืื ืขื ืื ืืืึธืก ืฆืืืื ื ืืืจ ืืืืื ืื ืึทืืจืขืก ืฆื, ืืขืจ ืงืขืจื ืืืขื ืฉืืขื ืืืง ืคึผืจืึธืฆืขืก ืึทืจืคึผ ืจืืงืืืขืก ืืื ืฉืืงื ืึทืจืคึผ ืจืขืกืคึผืึธื ืกืขืก ืฆื ืงืืื ืคืื ืืื, ืืขื ื ืึทืืืจ ืืื ืืขืืืืื ืจืืืืืง ืืื, ืืขืจืฆื, ืืื ืืึทื ืฅ ืืืืืืื ืืขื ืืฆื ืืื ืึทืืึท ืึท ืืื ืึทืืืฉ ืกืืืืืืข ืืื Kubernetes.
ืืขื ืึธืคึผืคืืจืื ื ืงืขื ืขื ืืืื ืงืึทืกืืึทืืืืื, ืืืฉื ืืืจื ืขื ืืืืึทืืื ื ืฉืืจืขื ื ืึทืจืคึผ:
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
ืืื ืืขื ืคืึทื, ืึทืจืคึผ ืจืขืกืคึผืึธื ืกืขืก ืืืขื ืืืื ืืขืฉืืงื ืืืืื ืืืื ืื ืฆืืืื ื ืืคืืจืืฉ ืึผืืื ืึท ืกืคึผืขืฆืืคืืฉ IP ืึทืืจืขืก. ืื ืืึทืฉืืขืืืงื ืืื ืคืืจืืื ืื ืืืื ืืืจ ืคึผืืึทื ืฆื ื ืืฆื MetalLB ืืื ืืืื ืงืืืข-ืคึผืจืึธืงืกื ืืื ืคืืืกื ืืืง ืืื IPVS ืืึธืืข.
ืึธืืขืจ, MetalLB ื ืืฆื ื ืืฉื ืืขื ืงืขืจื ืฆื ืคึผืจืึธืฆืขืก ืึทืจืคึผ ืจืืงืืืขืก, ืึธืืขืจ ืขืก ืืื ืืื ืืึทื ืืฆืขืจ-ืคึผืืึทืฅ, ืึทืืื ืื ืึธืคึผืฆืืข ืืืขื ื ืืฉื ืืืืจืงื ืื ืึธืคึผืขืจืึทืฆืืข ืคืื โโ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
, ืืืจ ื ืฐืขืืืข ืจ ืื ืจ ืืื ื ืืืงืืืข ื ืืข ื ืคืขืงื .
ืืื ืฆื ืงืึธืคึผืข ืืื ืืขื ืกืืืืึทืฆืืข?
ืืื ืืขื ืคืึทื, ืืืจ ืืึทืจืคึฟื ืฆื ืฆืืืจืืืื ืึทืืข ืืืื ื ืึธืืื ืึทืืื ืึทื ืืื ืืขื ืขื ืืจืืื ืฆื ืืื ืขื ืคืื ืืจืืืกื ืืืง ืืืขื ืื ืึธื ื ืึธื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืึทื ืืื, ืคึฟืึทืจ ืื ืืืืื ืืืึทืฉืคึผืื, ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท ืืืืึทื ืฆืืืื ื ืืืืฃ ืื ื ืึธืืข ืืื ืฉืืืึทืื:
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: ืืืขื ืืืจ ืืึทืจืคึฟื ืคึผืึธืืืืืง-ืืืืืจื ืจืืืื ื
ืื ื ืขืฅ ืืึทืคึผืึทืืึทืืืฉื ืืื ืื ืืขืืืข ืืื ืืื ืื ืคืจืืขืจืืืงืข ืืืึทืฉืคึผืื, ืึธืืขืจ ืืึธืื ืก ืืึธืื ืืืจ ืืืื ืืืืื ืฆื ืึทืงืกืขืก ืคืื ืืจืืืกื ืืืง ืืขืงื ืึทืืจืขืกืขืก 1.2.3.0/24
ืคืื ืืืื ืคึผืึธืืก:
ืื ืคึผืืงืืืืืขืจืึทืื ืืื ืึทื ืืืขื ืึทืงืกืขืกืื ื ืงืืื ืึทืืจืขืก ืืื 1.2.3.0/24
, ืืขืจ ืขื ืืคืขืจ ืคึผืึทืงืึทื ืืืฅ ืื ื ืึธืืข ืืื ืืื ืึท ืืงืืจ ืึทืืจืขืก ืืื ืื ืงืืื 1.2.3.0/24
ืฐืข ื ืืขืืฒื ื ืคืืจืฉืืง ื ืฐืขืจื eth0.100
, ืึธืืขืจ ืืืจ ืืืขืื Kubernetes ืฆื ืจืืืขืจืขืงื ืขืก ืฆื ืืื ืืืขืจ ืขืจืฉืืขืจ ืคึผืึธื, ืืืึธืก ืืืฉืขื ืขืจืืืืึทื ืื ืึธืจืืืื ืขื ืืขืื.
ืกืึทืืืืื ื ืืขื ืคึผืจืึธืืืขื ืืื ืืขืืืขื ืฉืืืขืจ, ืึธืืขืจ ืขืก ืืื ืืขืืืืจื ืืขืืืขื ืืึทื ืง ืฆื ืคึผืึธืืืืืง-ืืืืืจื ืจืืืื ื:
ืคึฟืึทืจ ืึท ืืขืกืขืจ ืคืืจืฉืืื ื ืคืื ืืขื ืคึผืจืึธืฆืขืก, ืืึธ ืืื ืึท ื ืขืืคืืืืขืจ ืืืึธืง ืืืึทืืจืึทืืข:
ืขืจืฉืืขืจ, ืืื ืืื ืื ืคืจืืขืจืืืงืข ืืืึทืฉืคึผืื, ืืึธืื ืืื ืื ืืึทืื ืึทื ื ืึธื ืจืืืื ื ืืืฉ:
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 ืืืคึผืืึทืืขื ืืืืฉืึทื ืคึฟืึทืจ ื ืขืืคืืืืขืจ. ื ืืฆื 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