
У меня возникла любопытная проблема с OpenVPN / UFW на Ubuntu 20.04.
У меня есть набор правил, разрешающих исходящий трафик через tun0:. ufw insert 1 allow out on tun0 from any to any
Настройки UFW по умолчанию установлены на запрет как входящего, так и исходящего трафика: ufw default deny outgoing
& ufw default deny incoming
.
Я могу направить трафик только через tun0 с запущенным UFW, если каждый раз при подключении к VPN мне приходится проделывать следующую странную процедуру:
ufw disable
(отключите UFW, как и ожидалось, чтобы разрешить VPN-подключение к серверу)- Подключиться к VPN (подключение успешно установлено)
ufw enable
(повторно включить UFW) -Пока все как и ожидалось - теперь я бы ожидал, что трафик будет отправляться через tun0 без каких-либо проблем... но нет. Теперь мне нужно сделать следующее...- Добавьте правило, разрешающее все исходящие соединения через любой интерфейс:
ufw insert 1 allow out from any to any
- Установите соединение в любом месте, например
ping 1.1.1.1
:Это важный шаг, без которого последующие соединения через tun0 не будут работать. - Удалить правило Iтолько что добавленкоторый разрешает все исходящие соединения через любой интерфейс (поскольку это явно не то, что нам нужно — намерение состоит в том, чтобы ограничить соединения tun0 в соответствии с существующим правилом):
ufw delete 1
Теперь я могу устанавливать соединения через VPN-туннель, как и ожидалось. Однако без шагов 4 и 5 все соединения блокируются UFW; я не могу подключиться через tun0 - даже несмотря на то, что есть явное правило UFW, разрешающее это.
Вот мой файл user.rules UFW (у меня также есть правило SSH):
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###
### tuple ### allow any 22 0.0.0.0/0 any 192.168.0.0/16 in
-A ufw-user-input -p tcp --dport 22 -s 192.168.0.0/16 -j ACCEPT
-A ufw-user-input -p udp --dport 22 -s 192.168.0.0/16 -j ACCEPT
### tuple ### allow any any 0.0.0.0/0 any 0.0.0.0/0 out_tun0
-A ufw-user-output -o tun0 -j ACCEPT
### tuple ### deny any any 0.0.0.0/0 any 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
### END RULES ###
### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-output -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m conntrack --ctstate INVALID -j RETURN -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
### END LOGGING ###
### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT
Есть идеи, почему происходит такое странное поведение?