Как настроить UFW для разрешения пересылки IP?

18

У меня на домашнем сервере установлены UFW, OpenVPN и Virtualbox. У меня есть сеть только для хоста для моих гостей виртуальной машины (vboxnet0), настроенная с диапазоном IP-адресов 10.0.1.0, и другой диапазон IP-адресов 10.0.0.0, настроенный на другом конце соединения OpenVPN.

Переадресация IP настроена на хосте, поэтому, когда UFW отключен, они могут общаться друг с другом без каких-либо проблем. Тем не менее, я хотел бы запустить UFW, так как этот хост будет доступен через Интернет, и мне нужен контроль доступа.

Как я могу настроить UFW, чтобы разрешить этот вид трафика?

Я пробовал разные комбинации: ufw allow allow in|out on vboxnet0|tun0безуспешно.

Мои правила UFW:

root@gimli:~# ufw status
Status: active

To                         Action      From
--                         ------      ----
22                         ALLOW       Anywhere
Anywhere                   ALLOW       10.0.0.0/16
Anywhere on vboxnet0       ALLOW       Anywhere
Anywhere on tun0           ALLOW       Anywhere

Anywhere                   ALLOW OUT   Anywhere on vboxnet0
Anywhere                   ALLOW OUT   Anywhere on tun0

Любая помощь будет принята с благодарностью.

Стивен Р.К.
источник

Ответы:

20

Я понял.

Отредактируйте /etc/default/ufwи установите DEFAULT_FORWARD_POLICYдля ПРИНЯТЬ :

DEFAULT_FORWARD_POLICY="ACCEPT"
Стивен Р.К.
источник
10
Есть ли способ разрешить только ему перенаправлять определенные порты, не устанавливая его для ПРИНЯТЬ все?
Маркус Даунинг
1
Я думаю, вам нужно перезапустить UFW после редактирования файла:service ufw restart
Мин Дан
10

Теперь это возможно - с man-страницы ufw:

Правила для трафика, предназначенного не для самого хоста, а для трафика, который должен маршрутизироваться / пересылаться через брандмауэр, должны указывать ключевое слово route перед правилом (правила маршрутизации значительно отличаются от синтаксиса PF и вместо этого учитывают условные обозначения цепей FORWARD netfilter) , Например:

     ufw route allow in on eth1 out on eth2

Это позволит всему трафику, направляемому на eth2 и поступающему на eth1, проходить через брандмауэр.

     ufw route allow in on eth0 out on eth1 to 12.34.45.67 port 80 proto tcp

Это правило позволяет любым пакетам, поступающим на eth0, проходить через брандмауэр eth1 на порт 80 tcp 12.34.45.67.

В дополнение к правилам и политике маршрутизации необходимо также настроить переадресацию IP. Это можно сделать, установив следующее в /etc/ufw/sysctl.conf:

     net/ipv4/ip_forward=1
     net/ipv6/conf/default/forwarding=1
     net/ipv6/conf/all/forwarding=1

затем перезапустите брандмауэр:

     ufw disable
     ufw enable

Имейте в виду, что настройка параметров ядра зависит от операционной системы, и настройки ufw sysctl могут быть переопределены. Смотрите страницу руководства sysctl для деталей.

Михал Силвестер
источник
1
Для тех из нас, кто хочет разрешить трафик tcp между клиентами OpenVPN на сервере OpenVPN, это работает. Например: ufw route разрешает вход на tun0 на tun0
вход
Для записи ufw routeприсутствует начиная с версии 0.34
Joril
7

если вы установите для DEFAULT_FORWARD_POLICY значение ACCEPT в / etc / default / ufw, брандмауэр будет пересылать все пакеты независимо от настроек пользовательского интерфейса.

Я думаю, что пользовательский интерфейс предназначен только для простой фильтрации входов и выходов. Для пересылки вам необходимо добавить правила iptables в /etc/ufw/before.rules, как здесь:

-A ufw-before-forward -i eth1 -p tcp -d 192.168.1.11 --dport 22 -j ACCEPT

Вероятно, у вас уже есть правило, которое разрешает соединения изнутри, а другое - пакеты обратно из связанных и установленных сеансов tcp.

Я не специалист по iptables, мне потребовалось очень много времени, чтобы понять это (с ip6tables, но это должно быть похоже). Может быть, это не все, что нужно в вашем случае.

С наилучшими пожеланиями

Джей Кристнах
источник
4

Эта команда UFW хорошо сработала для меня: sudo ufw default allow FORWARD

Чтобы убедиться, что изменение применяется: sudo service ufw restart

dcborg
источник
Это приводит к ошибке «Неверный синтаксис». Документы говорят: «НАПРАВЛЕНИЕ - это одно из входящих, исходящих или маршрутизируемых».
ColinM
@ColinM это сработало для меня на Xubuntu 16.04.5 LTS
baptx
FORWARDработает как псевдоним для routedв Ubuntu
patricktokeeffe