Маршрутизация между двумя сетевыми картами

Маршрутизация между двумя сетевыми картами

Я пытаюсь направить трафик между разными сетями и следую руководству, которое нашел здесь: https://devconnected.com/how-to-add-route-on-linux/

Вот диаграмма, которая, я надеюсь, адекватно отображает схему, с которой я работаю:

Windows 10              Ubuntu                            Linux
172.31.0.X <----------> 172.31.0.33 (eno1)
                        10.0.40.1 (enp2s0f0) <----------> 10.0.40.10

У меня на ПК с Windows настроен постоянный маршрут для маршрутизации всего трафика для 10.0.40.0/24 через 172.31.0.33.

Маршрут вывода на печать

Машина Ubuntu настроена на маршрутизацию трафика, предназначенного для 10.0.40.0/24, через 10.0.40.1.

ip r выход

Пинг 10.0.40.10 с машины Ubuntu работает, как и ожидалось.

Если я пингую 10.0.40.10 с ПК с Windows, я вижу, что сообщения ICMP приходят на интерфейс 172.31.0.33 на машине Ubuntu с помощью tcpdump. Я не вижу никакого трафика на интерфейсе 10.0.40.1 на этой машине. Похоже, что машина Ubuntu не маршрутизирует трафик, как я ожидал. Может ли кто-нибудь пролить свет на то, что я упустил?

Добавление вывода:

iptables -S

для машины Ubuntu:

sudo iptables -S
# Warning: iptables-legacy tables present, use iptables-legacy to see them
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-A FORWARD -i eno1 -j ACCEPT
-A FORWARD -i enp2s0f0 -j ACCEPT
adi@LabBuildServer:~$ sudo iptables-legacy -S
[sudo] password for adi:
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-e925d11be2da -m conntrack --ctstate RELATED,ESTABLISHED -j ACCE                         PT
-A FORWARD -o br-e925d11be2da -j DOCKER
-A FORWARD -i br-e925d11be2da ! -o br-e925d11be2da -j ACCEPT
-A FORWARD -i br-e925d11be2da -o br-e925d11be2da -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-e925d11be2da ! -o br-e925d11be2da -j DOCKER-IS                         OLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-e925d11be2da -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN

Вывод:

ip route

на хосте Linux:

ip route
default via 10.0.40.1 dev br-POE  proto static
10.0.40.0/24 dev br-POE  proto kernel  scope link  src 10.0.40.10

Машина с Ubuntu:

adi@LabBuildServer:~$ sudo iptables -t nat -L
[sudo] password for adi:
# Warning: iptables-legacy tables present, use iptables-legacy to see them
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination
MASQUERADE  all  --  anywhere             anywhere
MASQUERADE  all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

решение1

Решение прямо здесь:

-P FORWARD DROP

В вашем iptables-legacyнаборе правил политика пересылки пакетов по умолчанию установлена ​​на DROP, и в этом наборе правил нет правила, которое разрешало бы пересылку пакетов с eno1на enp2s0f0, а только пересылку с/на интерфейс моста...

Смешивать разные iptables — всегда плохая идея. Вам следует решить самостоятельно, хотите ли вы использовать один из них iptablesили нет iptables-legacy— каждый сетевой пакет будет проходить через оба набора правил, что приведет к большой путанице.

обновлять:
Мой ответ не должен означать, что вам нужно установить политику по умолчанию как принять, я просто указал на причину. Конечно, вы можете добавить правила, чтобы разрешить пересылку трафика только на эти конкретные IP-адреса, например, так:

-A FORWARD -i eno1 -s 172.31.0.0/24 -o enp2s0f0 -d 10.0.40.0/24 -j ACCEPT
-A FORWARD -i enp2s0f0 -s 10.0.40.0/24 -o eno1 -d 172.31.0.0/24 -j ACCEPT

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