Я настраиваю сервер OpenVPN, используя openvpn-установить. Я хотел бы, чтобы клиенты могли подключаться к VPN-серверу, но любой трафик, направленный в Интернет, а не в локальную сеть VPN, должен быть заблокирован.
Я видел много решений, предлагающих добавить push
команды server.conf
запрашивать, чтобы клиенты использовали свою собственную сеть для интернет-трафика по умолчанию, однако эти запросы могут игнорироваться клиентами — это не то, чего я хочу.
Я только хочу, чтобы VPN-клиенты могли получить доступ к локальной сети VPN (в 10.8.0.0/24
), весь другой трафик должен отклоняться VPN-сервером, и клиенты должны использовать для этого свои собственные сети.
Как я могу принудительно заблокировать интернет-трафик от VPN-клиентов?
linux ubuntu брандмауэр iptables openvpn
1 ответ
Это может быть достигнуто за счет использования iptables
заблокировав трафик, идущий от сетевого интерфейса OpenVPN к сетевому интерфейсу с доступом в Интернет.
openvpn-установить создает несколько iptables
файлы конфигурации, которые управляют правилами для вас.
Следующие инструкции предполагают, что:
tun0
это сетевой интерфейс OpenVPNeth0
это сетевой интерфейс с доступом в интернет
Начальные правила очистки
Во-первых, нам нужно отключить текущие правила, загруженные openvpn-install, выполнив следующую команду:
systemctl stop iptables-openvpn
Файлы конфигурации
Примечание: использование DROP
вместо REJECT
также действителен, он просто не возвращает ошибку VPN-клиенту. См. справочная страница iptables для получения дополнительной информации.
добавить-openvpn-rules.sh
В /etc/iptables/add-openvpn-rules.sh
измените строку с:
iptables -I FORWARD 1 -i tun0 -o eth0 -j ACCEPT
к:
iptables -I FORWARD 1 -i tun0 -o eth0 -j REJECT
РМ-openvpn-rules.sh
В /etc/iptables/rm-openvpn-rules.sh
измените строку с:
iptables -D FORWARD -i tun0 -o eth0 -j ACCEPT
к:
iptables -D FORWARD -i tun0 -o eth0 -j REJECT
Применение изменений
Выполните следующую команду, и ваши изменения должны быть сохранены и вступить в силу:
systemctl start iptables-openvpn
Раздельное туннелирование
Затем можно использовать отправку маршрутов для VPN-клиентов, чтобы запросить отправку интернет-трафика через их собственную сеть. Вот строки, которые я добавил в свой OpenVPN server.conf
файл для достижения этой цели (моя сеть VPN находится на 10.8.0.0/24
):
push "route 10.8.0.0 255.255.255.0 vpn_gateway"
push "route 0.0.0.0 0.0.0.0 net_gateway"