Двусторонняя пересылка как мост с iptables

Двусторонняя пересылка как мост с iptables

У меня Linux Box, и у него есть два интерфейса (eth0, eth1).

eth0 — это восходящее, а eth1 — нисходящее соединение.

eth0, eth1 подключены к каждому коммутатору (s/w0, s/w1).

s/w0 выходит в интернет, а s/w1 подключен к одному ноутбуку.

И мне нужна двусторонняя переадресация eth0, eth1 как мост.

Но не с помощью brctl, а только с помощью iptables.

Итак, если набор правил iptables правильный, то ноутбук должен быть подключен к Интернету.

Я пробовал эти правила, но они не работают.

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Буду признателен за любую помощь.

РЕДАКТИРОВАТЬ.

моя сеть выглядит так, как показано ниже.

internet - router - switch0 - eth0:linuxBox:eth1 - switch1 - laptop 

При создании моста с использованием brctl, как показано ниже, ноутбук может использовать Интернет.

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 off
ifconfig br0 up

Моя цель — создать правила iptables для замены brctl.

решение1

Вы должны указать, что Вы хотите. Мост не делает NAT, и Интернет не работает так, как Ethernet, где работает мост.
Если Вы хотите иметь интернет-шлюз с NAT и пересылать Ваши пакеты в соответствии с таблицами маршрутизации IP Ваших Linux-боксов, Ваши маршруты iptables выглядят вполне нормально. Вам просто нужно убедиться, что пересылка IP включена на этом боксе, а на ноутбуке в качестве шлюза по умолчанию установлен адрес eth1 Linux-бокса.


Итак, после Ваших обновлений: Вам не нужен мост. Достаточно шлюза.
1. Убедитесь, что интерфейсы Linux-бокса находятся в разных подсетях. Или, в качестве альтернативы, убедитесь, что в его таблицах маршрутизации есть маршрут по умолчанию на eth0 через шлюзовой интернет-маршрутизатор, а другой трафик для локальной сети (где, например, находится Ваш ноутбук) отправляется на eth1.
2. Создайте статическую конфигурацию IP на Вашем ноутбуке с IP в той же сети, что и eth1, и с маршрутизатором по умолчанию, установленным на адрес интерфейса, если eth1. Или настройте DHCP-сервер на Linux-боксе для того же самого.
3. Убедитесь, что IP-пересылка включена на Вашем Linux-боксе.

решение2

можешь попробовать

iptables –t nat –A POSTROUTING –o eth0 –j MASQUERADE
iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT

затем сохраните правила таблиц IP

iptables-save
iptables-save > /etc/sysconfig/iptables
systemctl restart iptables.service

затем откройте файл iptables и отредактируйте правила, переместите эти правила выше правил отклонения

iptables –A FORWARD –i eth0 –o eth1 –m state  --state RELATED,ESTABLISHED –j ACCEPT
iptables –A FORWARD –i eth1 –o eth0 –j ACCEPT
A FORWARD -o vibr0 -j REJECT --reject-with icmp-port-unreachable
A FORWARD -i vibr0 -j REJECT --reject-with icmp-port-unreachable

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