OpenVPN в линуксах — не rocket science, это должен уметь каждый
Итак, можно сказать, что времена массого заселения интернетов прошли успешно, минимальная компьютерная грамотность сегодня — умение запустить броузер и ориентироваться в вкладках-закладках, ссылках и поисковиках есть у всех.
Все это поддержалось тотальной WiFi-зацией пространства, и в целом, все привыкли, что Интернет — это некое единое магическое пространство, платоновский мир идей, к любому объекту которого которому можно всегда подключиться, если на ноутбуке-планшете-смартфоне горит значок сети или иконка веселой антенны.
Однако мир меняется, разные границы появляются и в интернете, и все чаще, можно получить удивительные ошибки «Ресурс заблокирован», «Это видео недоступно для вашей страны» и т.п. Кто только этим не занимается — Netflix и Hulu не хотят, даже за деньги[1] делиться контентом с Восточной Европой и Азией, ну, а про а про наши интернет-блокировки решениями районных судов тоже наслышаны все.
Впрочем, иногда ограничение доступа вполне оправдано, когда речь идет о доступе к корпоративному интранету — только доверенные сотрудники должны иметь к нему доступ. Но ведь этим сотрудникам хочется удобства и постоянного доступа, и не с привинченного к полу громоздкого десктопа в унылом офис-центре, а с своего любимого лептопа, в любой момент, из дома, вайфайзированного кафе или парка, и прочего цивилизованного пространства («дом, это то место, где WiFI подключается автоматически»). В общем, BYOD-тренд заруливает.
Все эти задачи — как протуннелировать в другую сеть, и стать для интернета «голландцем» или «американцем», или наоборот, попасть в свою внутреннюю сверхзащищенную сеть, или даже просто — вырваться из недоверенной сети, где твои пароли могут прослушать — решают VPN-технологии, и здесь мы не будем говорить прописных истин о том, как это работает, почему это надежно, о тонкостях алгоритмов шифрования, сертификатах капусте, Королях и т.п., а расскажем о том, как это для выглядит для пользователя в наших дистрибутивах.
Да, подавляющее большинство VPN-сетей кстати тоже сделаны на базе open-source технологий OpenVPN[2], и там очень много гитик, как все это настраивать — сертификаты, ключи, конфиги, под винду надо ставить специальный софт, с глючными драйверами, в общем, сам в свое время писал регламенты подключения удаленным сотрудникам, ставил все это, офигевая от сложностей объяснения, ну а большинство пользователей запомнили, что «випиэн» — это какой-то рокетсайнс, и надо звать бородатых чуваков в растянутых свитерах[3], ибо само не заработает.
В GNOME же все это работает из коробки! И не нужно знать практически ничего.
Допустим, вы решили вырваться в Атлантический Интернет — арендуете за $1/месяц какой-нибудь ProstoVPN[4], вам присылают набор каких-то файлов (файл-конфигурации и всякие ключи — не глядя положите-распакуйте их куда-нибудь, где вы их не сотрете, и запустите «Настроить сеть» → «+» → «VPN» → «Импортировать из файла»
Тут уже выберите файл с расширением «*.ovpn» или «.config», это зависит от фантазии сисадминов или провайдера, и если есть выбор между «что-то TCP» и «что-то UDP», то, в любой такой непонятной ситуации выбирайте «что-то TCP».
Все, ничего не трогая руками, можете смело жать кнопку «Добавить».
Ура! У вас в выпадающем списке сетей появился еще один слайдер-переключатель для защищенной сети, и достаточно переключить его, как иконка сети превратится в замочек, а вы, согласно сервисам, типа http://internet.yandex.ru, смените место жительства.
Итак, все замечательно, работает из коробки, зачем же я начал писать статью… А, конечно нет. Не все. Без напильника и наших доработок конечно не обошлось.
Да, обычный VPN, когда весь трафик мы выбрасываем через выбранную точку, работает ОК, но при доступе к корпоративным частным сетям нужно несколько другое — чтобы только в корпоративную сеть шли только обращения за внутренними сайтами, всякими там *.office.supercompany.ru, а гугл-яндекс-вконтактик по-прежнему работали с вами напрямую.
Технически, это означает, что маршрут по умолчанию не должен меняться (см. первую строчку таблицы)
[stas@stas-HP2740p-grey test-openvpn]$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 10.168.0.1 0.0.0.0 UG 0 0 0 wlan0
10.9.0.0 10.9.0.5 255.255.255.0 UG 0 0 0 tun0
10.9.0.5 0.0.0.0 255.255.255.255 UH 0 0 0 tun0
А практически, для этого в GNOME Network Manager нужно было поставить одну галочку:
Но это не работало! Галочку «использовать это подключение только для ресурсов локальной сети» ставили, но она не запоминалась, и соответственно, все работало по прежнему, через… туннель.
Пришлось разбираться и фиксить — оказалось да, глупая UI-ошибка, когда изменение этого чекбоксика формой не отслеживалось, это изменение не запоминалось, ну и так далее.
Good news, everyone!
UX Team пофиксил и это, и у нас OpenVPN в GNOME работает из коробки и как должно — просто, легко, и надежно.
А, что касается KDE — там тоже все ОК, допиливать не пришлось, и примерно также.
Тоже не надо забывать установить правильную галочку про частные сети, и про использование TCP-соединения:
http://wiki.rosalab.ru/ru/index.php/%D0%91%D0%BB%D0%BE%D0%B3:%D0%A2%D0%BE%D1%87%D0%BA%D0%B0_%D0%A0%D0%BE%D1%81%D1%8B/OpenVPN_%D0%B2_GNOME_%E2%80%94_%D0%BD%D0%B5_rocket_science,_%D1%8D%D1%82%D0%BE_%D0%B4%D0%BE%D0%BB%D0%B6%D0%B5%D0%BD_%D1%83%D0%BC%D0%B5%D1%82%D1%8C_%D0%BA%D0%B0%D0%B6%D0%B4%D1%8B%D0%B9
|