Как использовать iptables, чтобы разрешить трафик только через один конкретный VPN

Я пытаюсь разрешить весь трафик с моего Banana PI под управлением Lubuntu идти только в мою локальную сеть или иным образом через VPN-сервер. Я следую в этом руководстве: http://joelslowik.blogspot.co.uk/2013/05/setup-iptables-for-vpn-and-local.html

по сути, он говорит, что я должен использовать эти правила:

#Allow loopback device (internal communication)
iptables -A INPUT -i lo -j 
iptables -A OUTPUT -o lo -j ACCEPT
#Allow all local traffic.
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -d 192.168.1.0/24 -j ACCEPT
#Allow VPN establishment
iptables -A OUTPUT -p udp --dport 1194 -j ACCEPT
iptables -A INPUT -p udp --sport 1194 -j ACCEPT
#Accept all TUN connections (tun = VPN tunnel)
iptables -A OUTPUT -o tun+ -j ACCEPT
iptables -A INPUT -i tun+ -j ACCEPT
#Set default policies to drop all communication unless specifically allowed
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

но, насколько я понимаю, это позволит трафик через любой VPN (или что-нибудь с сетевым интерфейсом, начиная с "tun", если на то пошло).

Я пытался использовать

iptables -A INPUT -s XXX.XXX.XXX.XXX -j ACCEPT
iptables -A OUTPUT -d XXX.XXX.XXX.XXX -j ACCEPT

С IP-адресом VPN-сервера, но это, похоже, тоже не работает, он просто не будет подключаться к VPN.

Так как я должен это делать? Я сделал то же самое на Windows, используя Брандмауэр Windows (после этой guide), просто блокирует любой IP-адрес, кроме локальных и VPN-сервера, и он отлично работает.

27
задан Community
11.02.2023 1:10 Количество просмотров материала 2634
Распечатать страницу

2 ответа

Так как кажется, что вы используете OpenVPN, одна вещь, которую вы могли бы легко сделать, это дать устройству VPN tun явное имя вместо использования tunN.

это совершенно справедливо поставить что-то вроде. dev tun_home в настройки OpenVPN. Это приведет к устройству туннеля с именем tun_home. Затем вы можете использовать это в своих правилах брандмауэра вместо использования подстановочного имени устройства match tun+.

1
отвечен Zoredache 2023-02-12 08:58

Я полагаю, что здесь вы хотите, чтобы весь нелокальный трафик проходил через VPN (например, доступ в интернет). Если это правда, я думаю, что было бы проще и лучше использовать таблицу маршрутизации, чтобы делать то, что вы хотите, а не брандмауэр. Можно определить маршрут по умолчанию для использования VPN вместо текущего маршрута по умолчанию.

route add default dev tun0

или что-то подобное и удалить текущий маршрут по умолчанию.

С другой стороны, если вы действительно хотите заблокировать все, что есть не локальной или VPN, то вы находитесь в правильном направлении с помощью iptables.

1
отвечен laurent 2023-02-12 11:15

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх