У меня любопытная проблема с OpenVPN/UFW в Ubuntu 20.04.
У меня есть правило, разрешающее исходящий трафик через tun0: ufw вставить 1 разрешить выход на tun0 из любого в любой
. По умолчанию UFW настроен на отказ как на входе, так и на выходе: ufw по умолчанию запрещает исходящий
& ufw по умолчанию запрещает входящие
.
Я могу направить трафик через tun0 только при работающем UFW, если каждый раз, когда я хочу подключиться к VPN, я выполняю следующий странный танец:
ufw отключить
(отключите UFW, как и следовало ожидать, чтобы разрешить VPN подключаться к серверу)
- Подключиться к VPN (соединение успешно установлено)
ufw включить
(повторно включить UFW) - Пока, как и ожидалось - теперь я ожидаю, что трафик будет отправляться через tun0 без каких-либо проблем ... но нет. Теперь мне нужно сделать следующее...
- Добавьте правило, разрешающее все исходящие соединения через любой интерфейс:
ufw вставить 1 разрешить из любого в любой
- Установите соединение в любом месте - например.
пинг 1.1.1.1
. Это жизненно важный шаг, без которого последующие соединения через tun0 не будут работать.
- Удалить правило I только что добавлен который разрешает все исходящие соединения через любой интерфейс (поскольку это явно не то, что нам нужно - намерение состоит в том, чтобы ограничить соединения tun0 в соответствии с существующим правилом):
удалить 1
Теперь я могу устанавливать соединения через VPN-туннель, как и ожидалось. Однако без шагов 4 и 5 все соединения блокируются UFW; Я не могу подключиться через tun0, хотя для этого установлено явное правило UFW.
Вот мой файл user.rules UFW (у меня тоже есть правило SSH):
*фильтр
:ufw-пользовательский ввод - [0:0]
:ufw-пользовательский-вывод - [0:0]
:ufw-пользователь-вперед - [0:0]
:ufw-before-log-input - [0:0]
:ufw-before-log-output - [0:0]
:ufw-before-log-forward - [0:0]
:ufw-user-loging-input - [0:0]
:ufw-user-loging-output - [0:0]
:ufw-user-log-forward - [0:0]
:ufw-после-логирования-ввода - [0:0]
:ufw-после-логирования-вывода - [0:0]
:ufw-после-логирования-вперед - [0:0]
:ufw-log-deny - [0:0]
:ufw-логирование-разрешить - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### ПРАВИЛА ###
### кортеж ### разрешить любые 22 0.0.0.0/0 любые 192.168.0.0/16 в
-A ufw-user-input -p tcp --dport 22 -s 192.168.0.0/16 -j ПРИНЯТЬ
-A ufw-user-input -p udp --dport 22 -s 192.168.0.0/16 -j ПРИНЯТЬ
### кортеж ### разрешить любой любой 0.0.0.0/0 любой 0.0.0.0/0 out_tun0
-A ufw-user-output -o tun0 -j ПРИНЯТЬ
### кортеж ### запретить любой любой 0.0.0.0/0 любой 0.0.0.0/0 out
-A ufw-user-output -j DROP
### tuple ### deny any any 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -j DROP
### КОНЕЦ ПРАВИЛ ###
### ВЕДЕНИЕ ЖУРНАЛА ###
-A ufw-after-log-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-log-output -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-log-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate НЕДЕЙСТВИТЕЛЬНО -j ВОЗВРАТ -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### КОНЕЦ РЕГИСТРАЦИИ ###
### ОГРАНИЧЕНИЕ СКОРОСТИ ###
-A ufw-user-limit -m limit --limit 3/min -j LOG --log-prefix "[UFW LIMIT BLOCK]"
-A ufw-user-limit -j ОТКЛОНИТЬ
-A ufw-user-limit-accept -j ПРИНЯТЬ
### КОНЕЦ ОГРАНИЧЕНИЯ СКОРОСТИ ###
СОВЕРШИТЬ
Любые идеи, почему это странное поведение происходит?