Я пытаюсь разрешить весь трафик с моего 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 (следуя этому руководству), просто заблокировав любой IP-адрес, кроме локального и VPN-сервера, и он отлично работает.

2 ответа2

1

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

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

1

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

route add default dev tun0

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .