Каталог Поиск 0 Сравнить 0 Закладки 0 Корзина Войти
Каталог
105082, Москва, ул. Фридриха Энгельса, 75с21, БЦ Бауманский ИТКОЛ
Пн - Пт: с 09-00 до 18-00 Сб: с 10-00 до 18-00 Вс: выходной
Страницы: 1
RSS
Настройка Linux в качестве VPN-клиента (L2TP), UniFi Network
 
Привет! Я настроил VPN-сервер на своём USG (L2TP/Radius через GUI), и всё отлично работает. Проверял на Windows 10 и iPhone. Но у меня проблемы с настройкой клиента на Linux (например, CentOS/RHEL 7). Очень хочу, чтобы это заработало, потому что это часть моего решения для резервного копирования за пределами офиса. 😰

Я смотрел разные описания, как это сделать, и похоже, что есть несколько методов (ipsec, xl2tpd, libreswan, openswan, strongswan, ppp, NetworkManagement и так далее) и их комбинаций. Кто-нибудь уже сделал это? Лучше бы через командную строку и конфигурационные файлы, потому что на удалённом Linux-клиенте VPN у меня нет графического интерфейса.
 
Пожалуйста, опубликуйте свою конфигурацию. Мне очень интересно узнать для будущих настроек. Замечание: я решил свою конкретную задачу, завершая OpenVPN-туннель на NAS, а не на USG (в любом случае именно на NAS хранятся данные для резервного копирования).
 
Пожалуйста, пришлите вашу конфигурацию, это может помочь многим. Спасибо!
 
Только что настроил соединение с AWS Ubuntu клиента на свой USG. Если у вас ещё не получилось, дайте знать. Завтра выложу свои очищенные конфиги.
 
Рабочая настройка с Windows 10 VPN L2TP.  
Ubuntu 17.10 Gnome.  
VPN-соединение теперь успешно: не работает с Ubuntu 17.10 после добавления network-manager-l2tp.  
Подозреваю: Strongswan.  
Пробовал: sudo apt install libreswan (заменяет strongswan).  

2. Ваш VPN-сервер использует устаревший IPsec-шифр, который strongswan считает ненадёжным, так как он старый и слабый.  
Смотрите раздел «User specified IPsec IKEv1 cipher suites» в файле README.md:  
https://github.com/nm-l2tp/network-m...-cipher-suites  
Там есть пример, как прописать старые устаревшие шифры для алгоритмов Фазы 1 и 2 в диалоговом окне настройки IPsec, которые потом используются в предложениях для согласования с VPN-сервером.  

В качестве альтернативы можно заменить strongswan на libreswan, который поставляется с Ubuntu 17.10 и не имеет таких проблем с устаревшими IPsec-алгоритмами, установив его командой:  
sudo apt install libreswan  

Примечание: этот обход проблем с шифрами с помощью libreswan не сработает для версий libreswan выше 3.20, которые будут поставляться с Ubuntu 18.04. Там потребуется такая же настройка алгоритмов Фазы 1 и 2, как и для strongswan.  

Источник:  
https://ubuntuforums.org/showthread.php?t=2374960
 
Чёрт возьми, чувак. Я переключился на новый пет-проект, как только у меня кое-как заработало. Секрет был в том, чтобы посмотреть соответствующую конфигурацию на стороне USG туннеля и всё правильно совместить. Дай-ка я посмотрю, не найдётся ли у меня последняя конфигурация, которую я использовал. Чёрт, похоже, я всё подчистую удалил, потому что AWS не был таким уж бесплатным, как обещали. Ага, вспомнил! Значит, ты же знаешь, что у тебя есть по сути три основных файла, которые ты редактируешь и которые формируют разные фазы туннеля? Это /etc/ipsec.conf, затем /etc/xl2tpd.conf и /etc/ppp/options.xl2tpd или их варианты. Для меня ключом было совместить конфигурации компонентов l2tp и ppp и убедиться, что обе стороны согласованы по тому, что они ожидают услышать друг от друга. Вот это было настоящей головной болью — тыща тычков вслепую, пока не осенило. В итоге я забил, потому что AWS использует свой репозиторий, и я думал, что не смогу настроить разделённый туннель по пользователю или приложению, так что плюнул. Надеюсь, это поможет тебе дойти до конца. Если хочешь сделать просто универсальный разделённый туннель — проблем не будет.
 
Твои инструкции — это самое близкое, что помогло моей AWS Ubuntu-инстанции подключиться к моему USG через L2TP VPN. Но всё равно не работает. Каждый раз, когда пытаюсь подключиться, выдает «failed»... Это ужасно раздражает, потому что с Linux настроить L2TP IPSEC VPN — просто головная боль. И ты был прав в своём посте: все туториалы рассказывают, как делать неправильно, потому что настройки не совпадают. У тебя получилось что-нибудь с тех пор, как ты последний раз писал?
 
Еще многое предстоит сделать. Буду разбираться, как запустить PPP на основе активного туннеля. proxyarp, похоже, не работает. И оказывается, что некоторые настройки в ipsec.conf либо неправильные, либо устаревшие:  
# устаревший ключ 'nat_traversal' в config setup  
# неизвестный ключ 'protostack'  
# устаревший ключ 'virtual_private' в config setup  
# устаревший ключ 'pfs' в соединении 'L2TP-PSK'  
PFS включается указанием группы DH в наборе шифров 'esp'  
### 4 ошибки разбора (0 фатальных) ###
 
Знаешь, что было бы реально круто? (Смотрю на тебя, @UBNT-MikeD) Если бы в разделе с удалённой VPN-сетью можно было экспортировать конфигурацию с настройками клиента на основе настроек сервера, чтобы просто скопировать и вставить их в клиенты. 😀
 
Ладно, прежде чем слишком радоваться, расскажу про свой конкретный кейс, который может отличаться от вашего и потребовать правок в некоторых компонентах аутентификации.  

Я начал этим заниматься, потому что хотел иметь возможность отправлять диагностические устройства, к которым у меня может не быть прямого доступа в удалённых сетях. Чтобы обойти эту проблему, я подумал, что раз у меня уже настроен удалённый VPN (L2TP) на шлюзе, то если мне удастся заставить диагностические устройства туннелироваться в мою сеть с удалённого сайта, проблема решена.  

Сервер: Unifi USG - удалённый VPN - L2TP - аутентификация RADIUS через 2012 R2  
Клиент: свежий экземпляр Ubuntu 16.04 на EC2 AWS с установленными strongswan и xl2tpd.  

USG:  
USG Radius:  
2012 R2 NPS Policy - Network Policy - Constraints - Authentication Methods:  

Потратил пару дней на это. Ни один из туториалов даже близко не подходил. В смысле, были в районе стадиона, но почти на парковке.  

Ссылка, которую разместил @Chatelier, реально меня приблизила к решению и помогла довести настройку до ума на основе отладочных логов для завершения туннеля. Основная часть проблем возникает из-за несоответствия параметров фазы 1/2 по ключевым настройкам. Если посмотреть на соответствующие файлы на вашем USG, станет ясно, насколько далеко расхождения у параметров в большинстве гайдов и сколько компонентов просто отсутствуют, хотя есть на стороне USG (ipsec/xl2tpd/ppp).  

/etc/ipsec.conf — конфигурация:  
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12  
nat_traversal=yes  
protostack=netkey  

conn L2TP-PSK  
authby=secret  
pfs=no  
auto=start  
keyexchange=ikev1  
keyingtries=3  
dpddelay=15  
dpdtimeout=45  
dpdaction=clear  
rekey=no  
ikelifetime=3600  
keylife=3600  
type=transport  
# Замените ниже на ваш локальный IP (частный, натский IP тоже подходит)  
left=[local.private.ip]
leftprotoport=17/1701  
# Замените IP на IP вашего VPN-сервера  
right=[server.public.ip]
rightprotoport=17/%any  
ike=aes128-sha1-modp2048,aes256-sha1-modp4096,aes128-sha1-modp1536,aes256-sha1-modp2048,aes128-sha1-modp1024,aes256-sha1-modp1536,aes256-sha1-modp1024,aes256-sha1,3des-sha1-modp1024,3des-sha1!  
esp=aes128-sha1-modp2048,aes256-sha1-modp4096,aes128-sha1-modp1536,aes256-sha1-modp2048,aes128-sha1-modp1024,aes256-sha1-modp1536,aes256-sha1-modp1024,aes128-sha1,aes256-sha1,3des-sha1!  

/etc/ipsec.secret  
[client.private.ip] [public.server.ip] : PSK "[remote.vpn.psk]"

/etc/xl2tpd/xl2tpd.conf  
[lac vpn-connection]
lns = [server.public.ip]
ppp debug = yes  
pppoptfile = /etc/ppp/options.l2tpd.client  
length bit = yes  

/etc/ppp/options.l2tpd.client  
ipcp-accept-local  
ipcp-accept-remote  
noccp  
refuse-eap  
refuse-chap  
noauth  
idle 1800  
mtu 1410  
mru 1410  
defaultroute  
usepeerdns  
debug  
logfile /var/log/xl2tpd.log  
connect-delay 5000  
proxyarp  
name [ad.user.login]
password [ad.user.password]

По пути было много проблем. Сначала я ставил в параметре right= в /etc/ipsec.conf fqdn вместо IP. Поскольку на сервере не было leftid, установленного на fqdn, рукопожатия не происходило, даже если я ставил rightid на fqdn в клиенте.  

Ещё одна проблема — ошибки аутентификации (боже, их было много), но не на уровне логина и пароля, а именно в методе аутентификации. Тут очень помогло добавление "refuse-eap" и "refuse-chap" в /etc/ppp/options.l2tpd.client. В одном из гайдов сказано, что нельзя напрямую указать require mschap-v2, нужно как бы направлять клиента и сервер туда, отказываясь от eap и chap.  

Важно: не ограничивайтесь просмотром логов только на клиенте при отладке, проверяйте все компоненты — сервер, RADIUS и все промежуточные звенья. Никогда не знаешь, откуда придёт идея, где найдёшь подсказку.  

Сейчас, если я перезапускаю клиента, он сам дотягивается до фазы 1 туннеля без участия пользователя. Но чтобы начать ppp, всё ещё нужно выполнить команду:  
echo "c vpn-connection" | sudo tee /var/run/xl2tpd/l2tp-control  

После инициации ppp нужно добавить маршрут к серверной сети:  
sudo ip route add 10.0.0.0/8 via [vpn.default.gateway] dev ppp0

Как только туннель поднят, можно убрать все debug-строки из конфигураций, потому что с включённым отладочным логом в syslog просто невыносимо громко.  

PPP-конфигурация и на клиенте, и на USG настроена с тайм-аутом idle 30 минут — похоже, что при отсутствии активности туннель разрывается (отправляется сигнал завершения клиенту). Не уверен, не отменяет ли это серверное значение настройка на клиенте. В GUI нет опции для этого, возможно, нужно лезть в CLI и менять вручную через config.gateway.json на контроллере. Либо просто заставить клиент периодически пинговать VPN-шлюз, чтобы поддерживать связь. Мне кажется, есть более правильный способ, когда трафика нет, но я только вчера запустил туннель и глазам нужен отдых.  

Надеюсь, это поможет или направит вас в правильное русло.
 
Привет! Я тоже заинтересован. Пробовал много уроков, но безуспешно. Вот это руководство может быть интересным: link. На сервере с Ubuntu 16.04, следуя предыдущему гайду, у меня возникает такая ошибка: parsed IKE_SA_INIT response 0 [ N(NO_PROP) ], received NO_PROPOSAL_CHOSEN notify error, установление соединения 'myvpn' не удалось. Frederic
 
Получилось настроить? Я сейчас тоже мучаюсь с той же проблемой. Похоже, что эту функцию на самом деле никто не использует, в сообществе почти нет контента по этой теме. Может, это потому, что Ubnt не хочет писать статью о том, как настраивать клиентов с разными операционными системами.
Страницы: 1
Читают тему (гостей: 1)