Я установил OpenVPN на других провайдерах VPS и хотел попробовать Google. Мне нравится соотношение цены и производительности Google, и особенно потому, что я могу запускать машины с телефона, не входя в систему каждый раз.
Я довел дело до того, что клиент подключается, но не может выйти в интернет.
Я открыл брандмауэр для порта OpenVPN.
Я включил переадресацию IP на виртуальной машине.
Клиент получает IP, шлюз, DNS — все правильно — при подключении.
Я подозреваю, что мне нужно построить маршрутизатор и/или маршрут, чтобы пакеты доходили от экземпляра OpenVPN до мира. Я очень хорошо прочитал документацию, но я застрял — я пока не сетевой гуру, все еще учусь по ходу дела. Прочитав, я понял, что могу преобразовать сеть в то, что они называют «устаревшей» структурой, но я хотел бы иметь возможность преодолеть эту проблему и понять, что происходит. Я думаю, это потому, что сеть разбита на множество разных подсетей; по сравнению с всего лишь одной сетью за брандмауэром (т. е. Legacy).
Глядя на карту в уме, мой OpenVPN отправляет данные на шлюз своей подсети, но оттуда, я думаю, пакеты теряются. Мне должен быть нужен маршрут от шлюза подсети до интернета? Или даже полный маршрутизатор между подсетью и интернетом?
Как я уже сказал, я раньше использовал виртуальные машины OpenVPN, никаких проблем. Поэтому я уверен, что проблема кроется в настройке сети Google Cloud.
Спасибо за любые советы.
решение1
Это исправило ситуацию:
iptables -t nat -I POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
До сих пор не понимаю, зачем мне это нужно было делать, возможно, образ Debian от Google более защищен, чем стандартный экземпляр Diebian.
Никаких других изменений в сети Google Cloud не потребовалось.
решение2
Вам нужно проверить несколько вещей.
Проверьте, есть ли у вас следующая директива в /etc/sysctl.conf
net.ipv4.ip_forward = 1
Убедитесь, что брандмауэр перенаправляет трафик, полученный от клиентов на интерфейсе VPN.
#OpenVPN interface=tun0 iptables -A FORWARD -i tun0 -j ACCEPT
Убедитесь, что вы маскируете исходящий трафик.
#WAN Interface on OpenVPN server is eth1 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE