
У меня есть виртуальная машина с двумя интерфейсами, eth0 и eth1. Я хочу, чтобы пакеты, входящие с eth0, обрабатывались, и если они не соответствуют ни одному правилу, отбрасывались. Если они соответствуют правилу, то я хочу, чтобы они пересылались на eth1 без каких-либо изменений. Другими словами, исходный и целевой IP пересылаемого пакета должны оставаться такими же, как и при входе в eth0. Я думал об использовании iptables для всего этого процесса, но начинаю думать, что пересылка без изменения пакета невозможна. Кто-нибудь может это подтвердить?
решение1
Давать возможностьмаршрутизацияна Linux:
IPv4
/proc/sys/net/ipv4/conf/all/forwarding
IPv6
echo 1 > /proc/sys/net/ipv6/conf/all/forwarding
Вы также можете настроить это для каждого сетевого адаптера, а не глобально (замените all
на имя сетевого адаптера). Обратите внимание, что это изменение не сохраняется при перезагрузках. Чтобы применить их при загрузке, вы можете настроить их в /etc/sysctl.conf
.
Вам также следует знатьrp_filter
параметр(фильтрация обратного пути).
После включения IP-пересылки вы можете фильтровать пересылаемые пакеты, добавляя правила в FORWARD
цепочку iptables (и ip6tables).