У меня Linux-бокс с одним сетевым интерфейсом и включенной переадресацией IP. Допустим, мой IP-адрес 192.168.1.1
и MAC 11:11:11:11:11:11
. Когда приходит пакет, не предназначенный для моего хоста, он маршрутизируется ядром, и исходящий пакет имеет исходный MAC-адрес. 11:11:11:11:11:11
, то есть MAC-адрес моего хоста. Я хочу изменить это поведение и установить предопределенный исходный MAC-адрес для всех маршрутизируемых пакетов. Можно ли добиться этого с помощью стандартных сетевых инструментов, доступных в Linux? Если нет, можно ли реализовать это в пользовательском пространстве с помощью таких библиотек, как pcap?
для пакетов, помеченных значениями 0x2 с помощью iptables:
IP_ADDR_ETH0=`ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n'`
iptables -t mangle -A OUTPUT -s ${IP_ADDR_ETH0} -p udp --match multiport --dports 319,320 -o eth0 -j MARK --set-mark 2
tc filter add dev eth0 parent 15:0 protocol ip prio 1 handle 0x2 fw action pedit ex munge eth src set ${MAC_ADDR_ETH1} pipe \
action pedit ex munge ip src set ${IP_ADDR_ETH1}