Назад | Перейти на главную страницу

Можно ли замаскировать пакет на мосту?

У меня есть контейнер с входящей VPN. Соединению с этим контейнером будет назначен 192.168.10.10 IP. Виртуальный сетевой адаптер контейнера имеет IP-адрес 10.10.10.1 и шлюз (на главном мосту) 10.10.10.254.

При прямом входе в контейнер пакет уйдет с 10.10.10.1 как источник и будет знать, как вернуться (через мост).

При подключении к VPN пакет уходит с 192.168.10.10 как источник и не вернется как 192.168.10.x не рекламируется в сети (в эту сеть нет маршрута).

Для этого есть два решения:

Я бы хотел (по разным причинам) избежать любого из этих решений, и мне было интересно если есть возможность сделать маскарад на самом мосту, на стороне хозяина?
Другими словами, пакет покидает контейнер с источником 192.168.10.10, который затем был бы переписан "мостом" на известный 10.10.10.1 IP (а затем снова переписывается, когда ответ возвращается в контейнер)

Примечание: как это сделать в shorewall было бы здорово, но любая информация будет отличной.

Для shorewall вы можете отредактировать / etc / shorewall / masq, чтобы он выглядел примерно так:

br0 192.168.10.1/24 - tcp 22,80,443

Вам также нужно будет создать запись в / etc / shorewall / hosts и / etc / shorewall / zone для диапазона VPN и, конечно же, добавить все необходимые правила в / etc / shorewall / rules.

Однако я думаю, что у вас может быть случай XY проблема.

Если я правильно понимаю вашу настройку, только ваш контейнер знает о 192.168.10/24 ассортимент.

Это означает, что проблема на самом деле не будет решена (только) с помощью маскарадинга.

Проблема в том, что хост, на котором работает контейнер, также не имеет маршрута для 192.168.10 / 24, потому что этот маршрут существует только в таблице маршрутизации контейнера.

Итак, как минимум, вам потребуется:

  • маршрут на вашем контейнере, указывающий на ваш контейнер (например, ip r add 192.168.10.1/24 via 10.10.10.1)
  • затем добавьте правило маски в Shorewall.

В противном случае ваш контейнерный хост видит, сколько марсиан приходит из вашего VPN-контейнера.

В MASQUERADE цель iptables работает в POSTROUTING таблица, которая используется только для пакетов, маршрутизируемых с одного интерфейса на другой. Мостовые пакеты, вероятно, никогда не будут доступны на уровне IP, поэтому вы не сможете их замаскировать.