ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข
ื ื™ื˜ ืœืึทื ื’ ืฆื•ืจื™ืง ืื™ืš ืื™ื– ื’ืขื•ื•ืขืŸ ืคื™ื™ืกื˜ ืžื™ื˜ ืึท ื–ื™ื™ืขืจ ื•ืžื’ืขื•ื•ื™ื™ื ื˜ืœืขืš ืึทืจื‘ืขื˜ ืคื•ืŸ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB. ืึทืœืฅ ื•ื•ืึธืœื˜ ื–ื™ื™ืŸ ื’ื•ื˜, ื•ื•ื™ื™ึทืœ ... ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ MetalLB ื˜ื•ื˜ ื ื™ืฉื˜ ื“ืึทืจืคืŸ ื ืึธืš ืึทืงืฉืึทื ื–, ืึธื‘ืขืจ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืคืึทืœ ืžื™ืจ ื”ืึธื‘ืŸ ืึท ื’ืึทื ืฅ ื’ืจื•ื™ืก ืงื ื•ื™ืœ ืžื™ื˜ ืึท ื–ื™ื™ืขืจ ืคึผืฉื•ื˜ ื ืขืฅ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ.

ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืื™ืš ื•ื•ืขื˜ ื–ืึธื’ืŸ ืื™ืจ ื•ื•ื™ ืฆื• ืงืึทื ืคื™ื’ื™ืขืจ ืžืงื•ืจ-ื‘ืื–ื™ืจื˜ ืื•ืŸ ืคึผืึธืœื™ื˜ื™ืง-ื‘ืื–ื™ืจื˜ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ ื“ื™ ืคื•ื ื“ืจื•ื™ืกื ื“ื™ืง ื ืขืฅ ืคื•ืŸ ื“ื™ื™ืŸ ืงื ื•ื™ืœ.

ืื™ืš ื•ื•ืขืœ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื™ืŸ ื“ืขื˜ืึทืœ ื•ื•ืขื’ืŸ ื™ื ืกื˜ืึธืœื™ื ื’ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื ื’ MetalLB, ื•ื•ื™ื™ึทืœ ืื™ืš ื™ื‘ืขืจื ืขืžืขืŸ ืึทื– ืื™ืจ ืฉื•ื™ืŸ ื”ืึธื‘ืŸ ืขื˜ืœืขื›ืข ื“ืขืจืคืึทืจื•ื ื’. ืื™ืš ืคึฟืึธืจืฉืœืึธื’ืŸ ื’ื™ื™ืŸ ื’ืœื™ื™ืš ืฆื• ื“ื™ ืคื•ื ื˜, ื ื™ื™ืžืœื™ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืจื•ื˜ื™ื ื’. ืึทื–ื•ื™ ืžื™ืจ ื”ืึธื‘ืŸ ืคื™ืจ ืงืึทืกืขืก:

ืคืึทืœ 1: ื•ื•ืขืŸ ืงื™ื™ืŸ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ื– ืคืืจืœืื ื’ื˜

ื–ืืœ ืก ืงื•ืง ื‘ื™ื™ึท ืึท ืคึผืฉื•ื˜ ืคืึทืœ.

ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ื ืึธืš ืจื•ื˜ื™ื ื’ ืงืึทื ืคื™ื’ื™ืขืจื™ื™ืฉืึทืŸ ืื™ื– ื ื™ื˜ ืคืืจืœืื ื’ื˜ ื•ื•ืขืŸ ื“ื™ ืึทื“ืจืขืกืขืก ืืจื•ื™ืก ื“ื•ืจืš 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: ื•ื•ืขืŸ ื ืึธืš ืงื•ืกื˜ืึธืžื™ื–ืึทื˜ื™ืึธืŸ ืื™ื– ืคืืจืœืื ื’ื˜

ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ืื™ืจ ื–ืึธืœ ืงืึทื ืคื™ื’ื™ืขืจ ื ืึธืš ืจื•ืฅ ื•ื•ืขืŸ ื“ื™ื™ืŸ ื ืึธื•ื“ื– ื˜ืึธืŸ ื ื™ื˜ ื”ืึธื‘ืŸ ืึท ืงืึทื ืคื™ื’ื™ืขืจื“ 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 ื‘ืึทื“ื™ื ื•ื ื’ืก ื•ื™ืกื•ื•ื™ื™ื ื™ืง.

ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ื•ื•ืขืŸ ืงืึธื ื˜ืึทืงื˜ 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 ืคื•ืŸ ื“ื™ื™ืŸ ืคึผืึธื“ืก:

ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ื“ื™ ืคึผื™ืงื™ื•ืœื™ืขืจืึทื˜ื™ ืื™ื– ืึทื– ื•ื•ืขืŸ ืึทืงืกืขืกื™ื ื’ ืงื™ื™ืŸ ืึทื“ืจืขืก ืื™ืŸ 1.2.3.0/24, ื“ืขืจ ืขื ื˜ืคืขืจ ืคึผืึทืงืึทื˜ ื”ื™ืฅ ื“ื™ ื ืึธื“ืข ืื•ืŸ ื”ืื˜ ืึท ืžืงื•ืจ ืึทื“ืจืขืก ืื™ืŸ ื“ื™ ืงื™ื™ื˜ 1.2.3.0/24 ืฐืข ื˜ ื’ืขื”ืฒื ืŸ ืคืืจืฉื™ืง ื˜ ืฐืขืจืŸ eth0.100, ืึธื‘ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ Kubernetes ืฆื• ืจื™ื“ืขืจืขืงื˜ ืขืก ืฆื• ืื•ื ื“ื–ืขืจ ืขืจืฉื˜ืขืจ ืคึผืึธื“, ื•ื•ืึธืก ื“ื–ืฉืขื ืขืจื™ื™ื˜ืึทื“ ื“ื™ ืึธืจื™ื’ื™ื ืขืœ ื‘ืขื˜ืŸ.

ืกืึทืœื•ื•ื™ื ื’ ื“ืขื ืคึผืจืึธื‘ืœืขื ืื™ื– ื’ืขื•ื•ืขืŸ ืฉื•ื•ืขืจ, ืึธื‘ืขืจ ืขืก ืื™ื– ื’ืขื•ื•ืืจืŸ ืžืขื’ืœืขืš ื“ืึทื ืง ืฆื• ืคึผืึธืœื™ื˜ื™ืง-ื‘ืื–ื™ืจื˜ ืจื•ื˜ื™ื ื’:

ืคึฟืึทืจ ืึท ื‘ืขืกืขืจ ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื“ืขื ืคึผืจืึธืฆืขืก, ื“ืึธ ืื™ื– ืึท ื ืขื˜ืคื™ืœื˜ืขืจ ื‘ืœืึธืง ื“ื™ืึทื’ืจืึทืžืข:
ืคื™ื™ืŸ-ื˜ื•ื ื™ื ื’ ืจื•ื˜ื™ื ื’ ืคึฟืึทืจ MetalLB ืื™ืŸ L2 ืžืึธื“ืข

ืขืจืฉื˜ืขืจ, ื•ื•ื™ ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ื‘ื™ื™ึทืฉืคึผื™ืœ, ืœืึธื–ืŸ ืื•ื ื“ื– ืžืึทื›ืŸ ืึทืŸ ื ืึธืš ืจื•ื˜ื™ื ื’ ื˜ื™ืฉ:

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

ืœื™ื™ื’ืŸ ืึท ื‘ืึทืžืขืจืงื•ื ื’