NB: Я - сетевой новичок, поэтому, пожалуйста, предположите, что я ничего не знаю и объясню вещи соответственно (или предоставьте ссылки на дополнительную информацию).

Я пытаюсь настроить сервер OpenVPN таким образом, чтобы весь трафик клиента (включая веб-трафик) направлялся через VPN. Я слежу за OpenVPN HOWTO и дошел до раздела «Маршрутизация всего клиентского трафика (включая веб-трафик) через VPN» (https://openvpn.net/index.php/open-source/documentation/howto.html#redirect).

Моя настройка:

  • Сервер OpenVPN (BeagleBone Black (BBB) по частной сети IP 10.240.233.2) подключен к моему широкополосному маршрутизатору дома (по частной сети IP 10.240.233.1).

  • Клиент (ноутбук с Xubuntu GNU/Linux) подключен к внешней сети.

Я могу успешно:

  • Запустите сервер OpenVPN на BBB при загрузке

  • Подключите клиента к VPN

  • Пинговать сервер OpenVPN (10.8.0.1) с клиента (10.8.0.6) и наоборот

  • Пингует роутер (10.240.233.1) с клиента

Последнее было достигнуто путем:

  • Добавив следующую директиву в файл конфигурации сервера: push "route 10.240.233.0 255.255.255.0"

  • Включение пересылки IP на сервере OpenVPN путем редактирования /etc/sysctl.conf (Вот это изменение: # Uncomment the next line to enable packet forwarding for IPv4 net.ipv4.ip_forward=1 , после чего команда sudo sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1)

  • Включение переадресации с помощью следующих команд (из этого руководства: https://nikinuryadin.wordpress.com/2010/04/16/step-by-step-setting-up-openvpn-in-debian-with-routing-tun- соединение /): sudo iptables -A INPUT -i tun+ -j ACCEPT и sudo iptables -A FORWARD -i tun+ -j ACCEPT

Теперь для перенаправления немного ...

Я добавил следующие директивы в файл конфигурации сервера (из OpenVPN HOWTO):

push "redirect-gateway def1"
push "dhcp-option DNS 10.240.233.1"

Примечание: отправленный IP-адрес DNS является IP-адресом моего широкополосного маршрутизатора, который я могу успешно пропинговать с клиента при подключении к VPN и который сервер сообщает как сервер имен (cat /etc/resolv.conf на сервере выдает сервер nameserver 10.240.233.1)

Затем я использовал следующую команду для NAT трафика VPN-клиента в Интернет (из OpenVPN HOWTO):

sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

(Да, мое соединение от сервера OpenVPN к широкополосному маршрутизатору сообщается сервером как eth0 (с использованием ifconfig))

Наконец, я выполнил следующие команды, чтобы сохранить iptables и перезапустить VPN (из ссылки Ники Нурьядина, указанной выше):

sudo iptables-save
sudo /etc/init.d/networking restart
sudo /etc/init.d/openvpn restart

Я могу успешно пропинговать www.google.com и www.bbc.co.uk с сервера OpenVPN. (Я также могу пинговать их с ноутбука, пока они не подключены к VPN, obv!). Однако при подключении к VPN я не могу пропинговать эти сайты с клиента.

Обычно, если вы пытаетесь пропинговать то, что недоступно (например, ping 192.168.7.2), вы получите такой результат:

PING 192.168.7.2 (192.168.7.2) 56(84) bytes of data.

а потом просто висит. Однако в этом случае, когда клиент подключен к серверу OpenVPN, и я пытаюсь пропинговать Google или BBC, я не получаю никакого вывода вообще.

Я не могу найти ответ нигде на serverfault.com или в другом месте. Единственная подсказка, которую я имею, - то, что OpenVPN HOWTO говорит:

[Использование `push" dhcp-option DNS 10.240.233.1 "] настроит клиентов Windows (или клиентов не Windows с некоторыми дополнительными сценариями на стороне сервера) для использования [10.240.233.1] в качестве их DNS-сервера.

Итак, мне нужны дополнительные сценарии на стороне сервера? Или есть другая проблема?

Кроме того, как только я могу пропинговать веб-сайты и просматривать Интернет, как я могу проверить, что весь трафик действительно проходит через туннель OpenVPN, а не просто обходит его, как это было до того, как я предпринял эти шаги?

1 ответ1

0

С тех пор я нашел ответ. Это была опечатка в HOWTO. Дополнительные сценарии требуются на стороне клиента , а не на стороне сервера .

Просто добавьте следующее в файл conf клиента :

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

И чтобы проверить, что весь трафик проходит через туннель, используйте traceroute , например

traceroute google.com

Выходные данные показывают маршрут, по которому идут пакеты, чтобы добраться до пункта назначения. Вы должны увидеть шлюз VPN (в моем случае, мой широкополосный маршрутизатор дома) в выводе traceroute.

Большое спасибо форумам сообщества OpenVPN за помощь в этом: http://forums.openvpn.net/viewtopic.php?f=4&t=23249&p=67315&sid=f2657d061da760b5af60aec18dcea81e#p67315

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