ื›ื•ื•ื ื•ืŸ ืขื“ื™ืŸ ืฉืœ ื ื™ืชื•ื‘ ืขื‘ื•ืจ 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) ื”ื›ืชื•ื‘ืช ืžืฆื•ืจืคืช ืœื›ืœ ืžืžืฉืง ืฆื•ืžืช (ืœื“ื•ื’ืžื” 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 ื‘ืื•ืคืŸ ื—ื™ืฆื•ื ื™.

ื›ื•ื•ื ื•ืŸ ืขื“ื™ืŸ ืฉืœ ื ื™ืชื•ื‘ ืขื‘ื•ืจ 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, ืฉื“ืจื›ื• ืงื™ื‘ืœื ื• ืืช ื”ื—ื‘ื™ืœื”.

ืื™ืš ืœื”ืชืžื•ื“ื“ ืขื ื”ืžืฆื‘ ื”ื–ื”?

ื‘ืžืงืจื” ื–ื”, ืขืœื™ืš ืœื”ื›ื™ืŸ ืืช ื›ืœ ื”ืฆืžืชื™ื ืฉืœืš ื‘ืฆื•ืจื” ื›ื–ื• ืฉื”ื ืžื•ื›ื ื™ื ืœืฉืจืช ื›ืชื•ื‘ื•ืช ื—ื™ืฆื•ื ื™ื•ืช ืœืœื ืชืฆื•ืจื” ื ื•ืกืคืช. ื›ืœื•ืžืจ, ืขื‘ื•ืจ ื”ื“ื•ื’ืžื” ืœืขื™ืœ, ืืชื” ืฆืจื™ืš ืœื™ืฆื•ืจ ืžืžืฉืง VLAN ืขืœ ื”ืฆื•ืžืช ืžืจืืฉ:

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 ื™ืคื ื” ืื•ืชื• ืืœ ื”ืคื•ื“ ื”ืจืืฉื•ืŸ ืฉืœื ื•, ืฉื™ืฆืจ ืืช ื”ื‘ืงืฉื” ื”ืžืงื•ืจื™ืช.

ืคืชืจื•ืŸ ื‘ืขื™ื” ื–ื• ื”ืชื‘ืจืจ ื›ืงืฉื”, ืืš ื–ื” ื”ืคืš ืืคืฉืจื™ ื”ื•ื“ื•ืช ืœื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืžื“ื™ื ื™ื•ืช:

ืœื”ื‘ื ื” ื˜ื•ื‘ื” ื™ื•ืชืจ ืฉืœ ื”ืชื”ืœื™ืš, ื”ื ื” ืชืจืฉื™ื ื‘ืœื•ืงื™ื ืฉืœ netfilter:
ื›ื•ื•ื ื•ืŸ ืขื“ื™ืŸ ืฉืœ ื ื™ืชื•ื‘ ืขื‘ื•ืจ 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 ืขื‘ื•ืจ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”