Маршрутизация и фильтрация в Linux

Маршрутизация и фильтрация в Linux

У меня есть виртуальная машина с двумя интерфейсами, 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).

Связанный контент