LINUX.ORG.RU
решено ФорумAdmin

Блокировка трафика вне сети WireGuard

 , ,


0

1

Добрый вечер!

Наверняка мой вопрос можно найти в поиске, но не хватает ума. Помогите пожалуйста.

Имеется VPS на котором настроил 2 wireguard сервера. Через wg0 я с друзьями хожу в интернет, а через wg_libx я хочу связать свои устройства. Нужно изолировать сеть 10.10.10.0 от других, что бы не было доступа в нее или из нее. Только что бы устройства этой сети могли общаться между собой.

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether *** brd ff:ff:ff:ff:ff:ff
    inet ***/24 brd *** scope global ens3
       valid_lft forever preferred_lft forever
    inet6 ***/64 scope link
       valid_lft forever preferred_lft forever
5: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.0.0.1/24 scope global wg0
       valid_lft forever preferred_lft forever
8: wg_libx: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
    link/none
    inet 10.10.10.1/24 scope global wg_libx
       valid_lft forever preferred_lft forever

wg0.conf

[Interface]
PrivateKey = ***
Address = 10.0.0.1/24
ListenPort = ***
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

wg_libx.conf

[Interface]
PrivateKey = ***
Address = 10.10.10.1/24
ListenPort = ***
#PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
#PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

Спасибо

Отредактировал wg0.conf:

PostUp = iptables -A FORWARD -i wg0 -o wg_libx -j DROP; iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -o wg_libx -j DROP; iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE

Что вышло в итоге:

root@99926:~# iptables -S | egrep -v ufw
-P INPUT DROP
-P FORWARD DROP
-P OUTPUT ACCEPT
-A FORWARD -i wg0 -o wg_libx -j DROP
-A FORWARD -i wg0 -j ACCEPT

До перезагрузки сервера вроде как заработало, перезагрузил и снова могу подключаться с одной сети в другую.

libixur
() автор топика

Многие годы не хотел лезть в этот iptables, т.к. казался очень сложным и малонеобходимым для моих задач. Но все же вникнул. Вот к чему я пришел:

-A FORWARD -d 10.0.0.0/8 -i wg0 -j DROP
-A FORWARD -i wg0 -j ACCEPT

Это правило выполняет все мои хотелки: клиенты из сети wg0(10.0.0.0) могут ходить в интернет, изолированы друг от друга и так же не могут попасть в другую мою сеть wg_libx(10.10.10.0). Но я долго не мог понять почему что бы я не делал я все равно могу подключиться по SSH к серверу. Даже пробовал добавлять "-A INPUT -i wg0 -d 10.0.0.0/8 -j DROP" хоть и не было в нем смысла т.к. по умолчанию весь входящий трафик блокируется. Но как оказалось я просто инорировал ufw, правила которого выполняются выше тех что добавляю я, а в нем у меня разрешены подключения с любого интерфейса:

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       Anywhere
Изменил на следующее и вроде как все проблемы решены:
To                         Action      From
--                         ------      ----
22/tcp on ens3             ALLOW       Anywhere
22/tcp on wg_libx          ALLOW       Anywhere

Ну и в самом конце пришел к тому что все можно заменить следующим правилом:

iptables -A FORWARD -i wg0 -o ens3 -j ACCEPT;
Которое как и выше решает все мои проблемы: доступ в интернет, изоляция клиентов от всего и запрет доступа к серверу.

Спасибо Anoxemian за пинок)

Теперь мои файлы конфигурации wireguard выглядят так:

root@99926:/etc/wireguard# grep Post ./wg*.conf
./wg0.conf:PostUp = iptables -A FORWARD -i %i -o ens3 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE
./wg0.conf:PostDown = iptables -D FORWARD -i %i -o ens3 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens3 -j MASQUERADE
./wg_libx.conf:PostUp = iptables -A FORWARD -i %i -j ACCEPT;
./wg_libx.conf:PostDown = iptables -D FORWARD -i %i -j ACCEPT;

Просьба более опытных подтвердить что я сделал все правильно и/или подкинуть еще какой-то совет по реализации.

libixur
() автор топика