Proxy arp local

Материал из noname.com.ua
Перейти к навигацииПерейти к поиску

PROXY ARP LOCAL

Решил сгородить SuperVlan на линуксе, но столкнулся с проблемой - proxy_arp в классическом понимании работает только между интерфейсами. А мне нужно было что бы роутре отвечал своим маком на любой запрос на ТОМ ЖЕ интерфейсе.
В новых (выше 2.6.36) ядрах есть соответвующяя опция, но у меня старое ядро и обновлять его я не имел возможности (не хотел поломать случйно что-то что делалось до меня, в частности ядерный accel pptp )

Текущяя конфигурация

Ядро:

# uname -a Linux impexmedia 2.6.23.8-sirmax2 #4 SMP Tue Dec 4 22:29:36 EET 2007 i686 06/17 GenuineIntel GNU/Linux

SuperVlan

ebtables

Есть интересная утилита - ebtables, которая позволяет сделать то что мне нужно.

# eix ebtables [I] net-firewall/ebtables Available versions: 2.0.9.2-r1 2.0.9.2-r2 ~2.0.10.2 {static} Installed versions: 2.0.9.2-r2(21:17:37 10/29/11)(-static) Homepage: http://ebtables.sourceforge.net/ Description: Utility that enables basic Ethernet frame filtering on a Linux bridge, MAC NAT and brouting.

Потому применяю следующюю конструкцию:

ebtables -t nat -F
ebtables -F

ebtables -t nat -N reply_ir_arp

ebtables -t nat -A reply_ir_arp -p arp --arp-ptype IPv4 -j arpreply --arpreply-mac 00:15:17:67:6b:53 --log-level 7 --log-arp --log-ip
# MAC интерфейса

ebtables -t nat -N spoof_ir_nets_SVL0
ebtables -t nat -A spoof_ir_nets_SVL0   -p arp --arp-ptype IPv4 --arp-ip-dst 178.151.247.67     --arp-ip-src 178.151.247.67     -j ACCEPT
ebtables -t nat -A spoof_ir_nets_SVL0   -p arp --arp-ptype IPv4 --arp-ip-dst 178.151.247.0/24   --arp-ip-src 178.151.247.0/24   -j reply_ir_arp
#ebtables -t nat -A spoof_ir_nets_SVL0  -p arp --arp-ptype IPv4 --arp-ip-dst 10.2.0.0/16        --arp-ip-src 10.2.0.0/16        -j reply_ir_arp
#ebtables -t nat -A spoof_ir_nets_SVL0  -p arp --arp-ptype IPv4 --arp-ip-dst 10.3.0.0/16        --arp-ip-src 10.3.0.0/16        -j reply_ir_arp

ebtables -t nat -N input_from_SVL0
ebtables -t nat -A input_from_SVL0      -p arp --arp-ptype IPv4 --arp-opcode 1 ! --arp-gratuitous -j spoof_ir_nets_SVL0


ebtables -t nat -A PREROUTING   -p arp --arp-ptype IPv4 --arp-opcode 1 ! --arp-gratuitous --log-level 7 --log-arp --log-ip --log-prefix "ARP_GRAT"
ebtables -t nat -A PREROUTING   -p arp --arp-ptype IPv4 --arp-opcode 1  --arp-gratuitous --log-level 7 --log-arp --log-ip --log-prefix "ARP_GRAT_1"

ebtables -t nat -A PREROUTING   --logical-in    SVL0                            -j input_from_SVL0
ebtables        -A FORWARD      --logical-in    SVL0    --logical-out SVL0      -j DROP


Gratuitous ARP

Gratuitous ARP could mean both gratuitous ARP request or gratuitous ARP reply. Gratuitous in this case means a request/reply that is not normally needed according to the ARP specification (RFC 826) but could be used in some cases. A gratuitous ARP request is an AddressResolutionProtocol request packet where the source and destination IP are both set to the IP of the machine issuing the packet and the destination MAC is the broadcast address ff:ff:ff:ff:ff:ff. Ordinarily, no reply packet will occur. A gratuitous ARP reply is a reply to which no request has been made.