Настройка PPTP-клиента в Linux
Недавно автору этих строк понадобилось настроить PPTP-соединение в Linux. После чтения документации оказалось что всё очень просто.
Приводимые здесь инструкции применимы в первую очередь для Debian/Ubuntu, однако, скорее всего без больших изменений ими можно воспользоваться и на других дистрибутивах.
Во-первых нужно установить несколько пакетов:
apt-get install pptp-linux ppp
Во-вторых создаём файл /etc/ppp/peers/vpn0 следующего содержания:
pty "pptp адрес_pptp_сервера --nolaunchpppd" name ваш_логин file /etc/ppp/options.pptp remotename PPTP ipparam vpn0
Далее открываем в редакторе файл /etc/ppp/chap-secrets и добавляем строку:
ваш_логин PPTP ваш_пароль
Наконец выполняем команду:
И всё работает. В системе должен появиться новый ppp-интерфейс. Проверить это можно командой:
Если же соединения не происходит, то можно попытаться выполнить команду:
pon vpn0 debug dump logfd 2 nodetach
И посмотреть какие ошибки будут выданы на экран.
Если нужно чтобы соединение выполнялось автоматически при загрузке компьютера, то нужно добавить в файл /etc/network/interfaces строки:
auto tunnel iface tunnel inet ppp provider vpn0
Таким способом автор успешно подключается к описанному ранее PPTP-серверу.
Комментарии:
Небольшое дополнение: чтобы вальнуть весь трафик через vpn нужно добавить в /etc/ppp/peers/vpn0 строчку:
Единственным недостатком такого подключения является то, что, если по каким либо причинам соединение разорвалось, то интерфейс падает и не переподключается. Мне нужно было создать впн подключение, что бы оно было на фиксированном интерфейсе(для создания правил в iptables), при разрыве переподключалось и не пересоздавала интерфейс(что бы можно было удобно всё это дело мониторить по snmp)
В общем нашел такое решение в роутере ASUS wl500gP, и сплагатил их конфиг себе
Ну собственно создаём файл /etc/ppp/peers/vpn0 с таким содержимым:
noauth refuse-eap
user »
password »
connect true
sync pty ‘pptp —idle-wait 0 —nolaunchpppd —nobuffer —sync’
lock
idle 1800 demand
maxfail 0
#Отвечает за переподключение при падении соединения
persist
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
defaultroute
#Создадим подключение на интерфейсе ppp999
unit 999
Anonymous 2011-06-24 11:22:53 (#)
Уважаемый MooSE, не могли бы Вы дополнить статью нюансами подключения к офисному pptp-серверу (построеному по http://www.ylsoftware.com/news/538) через домашний роутер (типа TRENDnet TEW-432BRP). Несколько часов блуждания по форумам успеха не принесли. Напрямую, без роутера, всё работает.
Уважаемый MooSE, не могли бы Вы дополнить статью нюансами подключения к офисному pptp-серверу (построеному по http://www.ylsoftware.com/news/538) через домашний роутер (типа TRENDnet TEW-432BRP). Несколько часов блуждания по форумам успеха не принесли. Напрямую, без роутера, всё работает.
Не могу:) Да и не хочу:) Потому что я знаю в чём проблема и решать еёё дело не благодарное. Сабжевый роутер скорее всего использует классический NAT, описанный ещё в RFC 1631. Этот NAT не содержит хаков для поддержки PPTP, который defective by design.
Моё ИМХО: или ставить роутер с соответствующими хаками, или не использовать сей арахичный протокол, ибо существуют куда как более вменяемые альтернативы.
Основная проблема PPTP в том что он использует GRE, который не работает через NAT. Есть роутеры, которые палят пакеты, идущие на tcp/1723 и вытаскивают из них информацию о туннеле после чего его корректно натят. Но это нарушение RFC 1631. Так что нафиг такое счастье.
При подключении из Network Manager соединение происходит успешно:
Nov 5 01:33:46 F80L pppd[3407]: Plugin /usr/lib/pppd/2.4.5/nm-pptp-pppd-plugin.so loaded. Nov 5 01:33:46 F80L pppd[3407]: pppd 2.4.5 started by root, uid 0 Nov 5 01:33:46 F80L pppd[3407]: Using interface ppp0 Nov 5 01:33:46 F80L pppd[3407]: Connect: ppp0 /dev/pts/6 Nov 5 01:33:46 F80L pptp[3410]: nm-pptp-service-3405 log[main:pptp.c:314]: The synchronous pptp option is NOT activated Nov 5 01:33:46 F80L NetworkManager[942]: SCPlugin-Ifupdown: devices added (path: /sys/devices/virtual/net/ppp0, iface: ppp0) Nov 5 01:33:46 F80L NetworkManager[942]: SCPlugin-Ifupdown: device added (path: /sys/devices/virtual/net/ppp0, iface: ppp0): no ifupdown configuration found. Nov 5 01:33:46 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 1 'Start-Control-Connection-Request' Nov 5 01:33:46 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_disp:pptp_ctrl.c:739]: Received Start Control Connection Reply Nov 5 01:33:46 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_disp:pptp_ctrl.c:773]: Client connection established. Nov 5 01:33:47 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_rep:pptp_ctrl.c:251]: Sent control packet type is 7 'Outgoing-Call-Request' Nov 5 01:33:48 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_disp:pptp_ctrl.c:858]: Received Outgoing Call Reply. Nov 5 01:33:48 F80L pptp[3425]: nm-pptp-service-3405 log[ctrlp_disp:pptp_ctrl.c:897]: Outgoing call established (call ID 0, peer's call ID 2432). Nov 5 01:33:48 F80L pppd[3407]: CHAP authentication succeeded Nov 5 01:33:48 F80L pppd[3407]: MPPE 128-bit stateless compression enabled Nov 5 01:33:48 F80L pppd[3407]: local IP address 10.0.1.203 Nov 5 01:33:48 F80L pppd[3407]: remote IP address 10.0.1.1 Nov 5 01:33:48 F80L NetworkManager[942]: Tunnel Device: ppp0 Nov 5 01:33:49 F80L NetworkManager[942]: (ppp0): writing resolv.conf to /sbin/resolvconf
При подключении с этой же машины указанным здесь способом — неудача:
# pon vpn1 debug dump logfd 2 nodetach pppd options in effect: debug # (from command line) nodetach # (from command line) logfd 2 # (from command line) dump # (from command line) noauth # (from /etc/ppp/options.pptp) refuse-pap # (from /etc/ppp/options.pptp) refuse-chap # (from /etc/ppp/options.pptp) refuse-mschap # (from /etc/ppp/options.pptp) refuse-eap # (from /etc/ppp/options.pptp) name user-23 # (from /etc/ppp/peers/vpn1) remotename PPTP # (from /etc/ppp/peers/vpn1) # (from /etc/ppp/options.pptp) pty pptp pptp_сервер --nolaunchpppd # (from /etc/ppp/peers/vpn1) crtscts # (from /etc/ppp/options) # (from /etc/ppp/options) asyncmap 0 # (from /etc/ppp/options) lcp-echo-failure 4 # (from /etc/ppp/options) lcp-echo-interval 30 # (from /etc/ppp/options) hide-password # (from /etc/ppp/options) ipparam vpn1 # (from /etc/ppp/peers/vpn1) nobsdcomp # (from /etc/ppp/options.pptp) nodeflate # (from /etc/ppp/options.pptp) noipx # (from /etc/ppp/options) using channel 19 Using interface ppp0 Connect: ppp0 /dev/pts/6 sent [LCP ConfReq ] rcvd [LCP ConfReq ] sent [LCP ConfAck ] rcvd [LCP ConfAck ] sent [LCP EchoReq magic=0x3c445e8b] rcvd [LCP EchoReq magic=0x9b238fcb] sent [LCP EchoRep magic=0x3c445e8b] rcvd [CHAP Challenge , name = "pptpd"] sent [CHAP Response , name = "user-23"] rcvd [LCP EchoRep magic=0x9b238fcb] rcvd [CHAP Success "S=C1AE2A867B4A2ACE33074F16B6DFFF0DC42BD6DD M=Access granted"] CHAP authentication succeeded sent [IPCP ConfReq ] rcvd [CCP ConfReq ] sent [CCP ConfReq [CCP ConfRej ] rcvd [IPCP TermAck [LCP TermReq "MPPE required but peer refused"] LCP terminated by peer (MPPE required but peer refused) sent [LCP TermAck [CCP ConfAck non-LCP packet when LCP not open Script pptp pptp_сервер --nolaunchpppd finished (pid 3528), status = 0x0 Modem hangup Connection terminated.
И сервер, и клиент настраивались по материалам вашего сайта. Помогите, пожалуйста, разобраться.
Управление VPN подключениями из консоли Linux
В этой статье мы рассмотрим, как создать VPN подключение из консоли Linux и подключиться к удаленному VPN серверу из CLI. Отдельно рассмотрим, как создать L2TP и PPTP VPN подключения.
Как создать L2TP VPN подключение в Linux?
Вы можете использовать NetworkManager для создания VPN подключений L2TP из консоли Linux.
Для установки NetworkManager с поддержкой L2TP выполните команду:
- В CentOS/RHEL/Fedora: # yum -y install NetworkManager-l2tp
- Для установки в Ubuntu/Debian, нужно сначала добавить репозиторий:
$ sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
$ sudo apt-get install network-manager-l2tp
Для создания нового VPN подключения L2TP используется команда:
$ nmcli connection add connection.id [VPNConnectionName] con-name [VPNConnectionName] type VPN vpn-type l2tp ifname — connection.autoconnect no ipv4.method auto vpn.data «gateway = [ipv4], ipsec-enabled = yes, ipsec-psk = 0s»$(base64
- [VPNConnectionName] — имя VPN соединения
- [ipv4] — ip адрес VPN сервера L2TP/IPSEC
- [PSK] — ключ PSK (Pre Shared Key)
- [user] — имя пользователя VPN
- [user-password] — пароль
Настройки нового VPN подключения сохраняются в файл /etc/NetworkManager/system-connections/.
Вывести все подключения в NetworkManager:
Показать информацию о созданном VPN подключении:
$ nmcli c show id [VPNConnectionName]
Для Для подключения к VPN серверу из командной строки:к VPN серверу их командной строки:
$ nmcli c up [VPNConnectionName]
При подключении к удаленному VPN серверу может появится ошибка:
Error: Connection activation failed: Could not find source connection.
- Проверьте логи journactl
- Для физического интерфейса (например, ens33 ) задан шлюз по-умолчанию
- Возможно на сервере используется интерфейс br0 , который не используется. Попробуйте удалить его
Чтобы завершить сессию VPN, выполните:
nmcli c down [VPNConnectionName]
Создаем PPTP VPN подключение в Linux
Для установки PPTP клиента VPN в Ubuntu/Debian, установите утилиту:
$ sudo apt-get install pptp-linux network-manager-pptp
Добавьте следующее содержимое:
pty "pptp YOUR_VPN_SERVER --nolaunchpppd --debug" name VPNUsername password VPNPassword remotename PPTP require-mppe-128 require-mschap-v2 refuse-eap refuse-pap refuse-chap refuse-mschap noauth debug persist maxfail 0 defaultroute replacedefaultroute usepeerdns
Сохраните файл, нажав CTLR+X, Y -> Enter.
$ chmod 600 /etc/ppp/peers/PPTP
Чтобы подключится к PPTP VPN серверу, выполните:
Настройка SSTP VPN подключения в командной строке Linux
Вы можете настроить SSTP подключение к VPN серверу в Linux. В Ubuntu можно использовать пакет sstp для nmcli.
$ sudo add-apt-repository ppa:eivnaes/network-manager-sstp
$ sudo apt update
$ sudo apt install network-manager-sstp sstp-client
Для подключения к SSTP серверу используется команда:
$ sudo sstpc —cert-warn —save-server-route —user —password usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate
Можно сохранить настройки подключения к VPN серверу в текстовый файл:
remotename sstptest linkname sstptest ipparam sstptest pty "sstpc --ipparam sstptest --nolaunchpppd sstpvpn.vmblog.ru" name user1 plugin sstp-pppd-plugin.so sstp-sock /var/run/sstpc/sstpc-sstp-test usepeerdns require-mppe require-mschap-v2 refuse-eap refuse-pap refuse-chap refuse-mschap nobsdcomp nodeflate
Имя пользователя и пароль для аутентификации на VPN сервере нужно задать в файле /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses user1 * xxxxxx *
Теперь для подключения к SSTP серверу с помощью настроенного подключения, выполните:
Чтобы отправить весь трафик через VPN подключение, нужно добавить маршрут:
$ sudo route add default (обычно это устройствл ppp0 )
Или только трафик к определенным подсетям/хостам:
$ sudo route add -net 192.168.2.0/24 dev ppp0
Подключение к OpenVPN серверу из консоли Linux
Для установки пакета OpenVPN в Linux:
- Debian, Ubuntu, Linux Mint, Kali Linux:
$ sudo apt-get update && apt-get upgrade
$ sudo apt-get install openvpn - RedHat, Fedora, CentOS, Oracle, Rocky Linux:
# yum install epel-release –y
# yum install openvpn –y
Для подключения к OpenVPN серверу вам понадобится файл конфигурации ovpn. Чтобы подключиться к VPN с помощью ovpn файла:
$ sudo openvpn —config /etc/openvpn/client.ovpn —daemon
Введите имя пользователя и пароль (если настроена AD аутентификация для OpenVPN).
Проверьте что VPN подключение установлено:
Чтобы завершить OpenVPN подключение, нажмите CTRL+C (если клиент запущен без параметра –daemon) или выполните команду:
Чтобы OpenVPN подключение автоматически устанавливалось при старте Linux, нужно создать отдельный юнит systemd:
$ sudo vi /lib/systemd/system/OpenVPNClientCorp.service
[Unit] Description=Hide.me OpenVPN Client Corp After=multi-user.target [Service] Type=idle ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client.ovpn [Install] WantedBy=multi-user.target
Измените разрешения на файл:
$ sudo chmod 644 /lib/systemd/system/OpenVPNClientCorp.service
Добавьте юнит через systemctl
$ sudo systemctl daemon-reload
$ sudo systemctl enable OpenVPNClientCorp.service