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, а не просто обходит его, как это было до того, как я предпринял эти шаги?