![Двусторонняя пересылка как мост с iptables](https://rvso.com/image/164730/%D0%94%D0%B2%D1%83%D1%81%D1%82%D0%BE%D1%80%D0%BE%D0%BD%D0%BD%D1%8F%D1%8F%20%D0%BF%D0%B5%D1%80%D0%B5%D1%81%D1%8B%D0%BB%D0%BA%D0%B0%20%D0%BA%D0%B0%D0%BA%20%D0%BC%D0%BE%D1%81%D1%82%20%D1%81%20iptables.png)
У меня 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