Назад | Перейти на главную страницу

Настроить VPN-шлюз на виртуальной машине Ubuntu

Прежде всего, мое понимание этого предмета очень ограничено. Я пытаюсь использовать виртуальную машину Ubuntu в качестве шлюза VPN для других моих устройств в той же сети. VPN использует VPN-клиент Cisco Anyconnect.

Конфигурация сети следующая:

Маршрутизатор TP-Link, подключенный к «Интернету», работает как шлюз по умолчанию с IP-адресом 192.168.0.1. Теперь виртуальная машина должна работать как шлюз по умолчанию для других устройств с IP 192.168.0.104.

Когда клиент устанавливает соединение, iptables на виртуальной машине выглядит так:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N ciscovpn
-N ciscovpnfinal
-N ciscovpnfw
-A INPUT -j ciscovpn
-A INPUT -j ciscovpnfw
-A INPUT -j ciscovpnfinal
-A FORWARD -j ciscovpn
-A FORWARD -j ciscovpnfw
-A FORWARD -j ciscovpnfinal
-A OUTPUT -j ciscovpn
-A OUTPUT -j ciscovpnfw
-A OUTPUT -j ciscovpnfinal
-A ciscovpn -m state --state RELATED,ESTABLISHED -j ACCEPT
-A ciscovpn -o lo+ -j ACCEPT
-A ciscovpn -i lo+ -j ACCEPT
-A ciscovpn -p udp -m udp --sport 68 --dport 67 -j ACCEPT
-A ciscovpn -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A ciscovpn -p udp -m udp --sport 546 --dport 547 -j ACCEPT
-A ciscovpn -p udp -m udp --sport 547 --dport 546 -j ACCEPT
-A ciscovpn -s 192.168.0.104/32 -d 193.175.213.80/32 -o enp0s3 -p tcp
-m tcp --dport 443 -j ACCEPT
-A ciscovpn -s 193.175.213.80/32 -d 192.168.0.104/32 -i enp0s3 -p tcp
-m tcp --sport 443 -j ACCEPT
-A ciscovpn -s 192.168.0.104/32 -d 193.175.213.80/32 -o enp0s3 -p udp
-m udp --dport 443 -j ACCEPT
-A ciscovpn -s 193.175.213.80/32 -d 192.168.0.104/32 -i enp0s3 -p udp
-m udp --sport 443 -j ACCEPT
-A ciscovpn -i cscotun0 -j RETURN
-A ciscovpn -s 10.60.38.146/32 -o cscotun0 -j RETURN
-A ciscovpn -j DROP
-A ciscovpnfinal -j ACCEPT

Виртуальная машина имеет интерфейс enp0s3 имеющий доступ к локальной сети. Интерфейс cscotun0 это интерфейс, созданный клиентом VPN для доступа в Интернет. Чтобы создать шлюз, я попробовал следующие команды, взятые из этот учебник:

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -A FORWARD -o cscotun0 -i enp0s3 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE

Однако виртуальная машина по-прежнему недоступна для других устройств в моей сети 192.168.0.0/24. Перед установкой соединения с VPN-клиентом я могу отправить команды ping с хост-машины на виртуальную машину. После установления соединения виртуальная машина становится недоступной. Я не могу глубоко понять те правила, которые создаются клиентом VPN.