Самый простой способ настроить Ubuntu в качестве VPN-сервера

68

Я знаю, что в сети есть много руководств по настройке VPN-клиента и сервера.

Если вы найдете один простой / короткий , меня интересует только серверная часть.

Для клиента я буду использовать OS X, поэтому я предпочитаю решение, которое использует L2TP over IPsecили PPTPпотому что я полагаю, что Cisco IPsec будет стоить что-то.

Я не хочу тратить слишком много часов на его настройку. Вы знаете, может быть, кто-то уже сделал скрипт установки :)

Примечание: я использую микроэкземпляр EC2, на котором работает Ubuntu 12.04.

Сорин
источник
3
Примечание: CISCO IPSec может быть достигнуто через StrongSwan и много настроек, но это сложно. PPTP больше не является безопасным. ANd L2TP через IPSec требует настройки L2TP и IPSec. Выбирайте на досуге, хотя мой ответ объясняет PPTP
Томас Уорд

Ответы:

24

ОБНОВЛЕНИЕ : Начиная с Sierra, macOS больше не поддерживает PPTP vpn. Этот ответ не действителен для клиентов MacOS Sierra и выше.

PPTP через PoPToP легко

  1. apt-get install pptpd
  2. отредактируйте /etc/pptpd.confи установите параметр remoteip для диапазона в вашей сети, который НЕ обслуживается вашим DHCP-сервером.
  3. редактировать /etc/ppp/chap-secretsи добавлять имя пользователя и пароль

например

vpnuser pptpd vpnpassword *

Это все, что нужно для настройки pptp. Теперь проверьте это с вашим клиентом OS X.

Джей _silly_evarlast_ Рен
источник
Мне также интересно, какие значения localip и remoteip являются самыми безопасными, учитывая, что я собираюсь подключиться к этому серверу из любого места. Определите значения по умолчанию с 192.168.0.и 192.168.1., вероятно, являются одним из худших возможных.
сорин
12 мая 13:28:06 zork pppd [9447]: загружен плагин /usr/lib/pptpd/pptpd-logwtmp.so. 12 мая 13:28:06 zork pppd [9447]: pppd 2.4.5 запущен root, uid 0 12 мая 13:28:06 zork pppd [9447]: использование интерфейса ppp0 12 мая 13:28:06 zork pppd [9447 ]: Connect: ppp0 <-> / dev / pts / 3 12 мая 13:28:36 zork pppd [9447]: зависание (SIGHUP) 12 мая 13:28:36 zork pppd [9447]: зависание модема 12 мая 13 : 28: 36 zork pppd [9447]: соединение разорвано. 12 мая 13:28:36 zork pppd [9447]: Exit.It еще не работает! Ваш гид неполный (пока);)
сорин
Да, это не работает.
bkerensa
1
не работал для меня
Тайлер Джиллис
@SorinSbarnea эти ips являются частными и никогда не выходят в интернет, поэтому я не знаю, что вы подразумеваете под "самым безопасным" Вам больше всего повезет, если они не имеют тот же диапазон IP-адресов, что и кафе, или рабочее место, с которого вы подключаетесь. Попробуйте 192.168.42. * :)
Джей _silly_evarlast_ Рен
86

ВНИМАНИЕ: PPTP - БЕЗОПАСНЫЙ ПРОТОКОЛ! Мало того, что шифрование было взломано, но оно отправляет вашу аутентификацию в виде открытого текста и легко перехватывается. Было подсчитано, что время, необходимое для взлома пароля, примерно эквивалентно времени, которое требуется для взлома одного ключа DES. Подумайте об использовании OpenVPN или другой архитектуры VPN вместо PPTP!

Я использовал это руководство для настройки VPN-сервера PPTP на моем сервере Ubuntu 12.04.


Чтобы суммировать основные моменты в ссылке, хотя:

1: установить pptpdи ufw. iptablesможет использоваться вместо UFW, но для простоты ufwлучше, если вы не знаете iptables.

sudo apt-get install pptpd ufw

2: Откройте необходимые порты. Руководство предлагает 22 (SSH) и 1723 для pptp vpn.

Sudo UFW позволяют 22
sudo ufw разрешить 1723
sudo ufw enable

3: Изменить /etc/ppp/pptpd-options. Откройте файл в вашем любимом редакторе (у меня nano, поэтому для меня это команда sudo nano /etc/ppp/pptpd-options) и закомментируйте эти строки, поставив #перед ними, если вы хотите, чтобы это работало универсально на всех ОС:

Отказываюсь мазок
Отказываюсь глава
Отказываюсь MSCHAP

Вы можете прокомментировать эту строку, если хотите отключить шифрование: require-mppe-128

4: во время редактирования /etc/ppp/pptpd-optionsдобавьте DNS-серверы для VPN. В этом примере используются серверы OpenDNS:

МС-днс 208.67.222.222
МС-днс 208.67.220.220

5: Редактировать /etc/pptpd.conf. Откройте файл в вашем любимом редакторе (у меня nano, так что команда для меня sudo nano /etc/pptpd.conf). Вам необходимо добавить локальные VPN-IP-адреса для системы, поэтому добавьте:

localip 10.99.99.99
remoteip 10.99.99.100-199

Если ваша система является VPS, используйте общедоступный IP-адрес для «localip». Если это не так и находится в локальной сети, используйте IP-адрес вашего компьютера. Используйте разные IP-адреса и диапазоны, если эти IP-адреса существуют в вашей подсети! Если вы не знаете свой публичный IP-адрес вашего VPS, найдите его, запустивdig +short myip.opendns.com @resolver1.opendns.com

6: Изменить /etc/ppp/chap-secrets. Откройте файл в вашем любимом редакторе (у меня nano, поэтому для меня команда sudo nano /etc/ppp/chap-secrets) и добавьте данные аутентификации.
Формат для /etc/ppp/chap-secrets:

[Имя пользователя] [Сервис] [Пароль] [Разрешенный IP-адрес]

Примером может быть: sampleuser pptpd samplepassword *

7: перезапустите pptpd. Запустите эту команду в терминале:sudo /etc/init.d/pptpd restart

8: Редактировать /etc/sysctl.conf. Откройте файл в вашем любимом редакторе (у меня nano, так что команда для меня sudo nano /etc/sysctl.conf). Снимите комментарий со следующей строки (удалив ее #в начале) в /etc/sysctl.conf: net.ipv4.ip_forward=1
Перезагрузите конфигурацию: sudo sysctl -p

9: этот шаг предполагает, что у вас есть UFW.
Отредактируйте /etc/default/ufwи измените параметр DEFAULT_FORWARD_POLICYс DROPнаACCEPT

10: этот шаг предполагает, что у вас есть UFW.
Отредактируйте /etc/ufw/before.rulesи добавьте следующее в начале /etc/ufw/before.rulesили непосредственно перед *filterправилами (рекомендуется):

# Правила таблицы NAT
* физ

: РАЗМЕЩЕНИЕ ПРИНЯТИЯ [0: 0]
# Разрешить пересылать трафик на eth0
-A POSTROUTING -s 10.99.99.0/24 -o eth0 -j MASQUERADE

# Обработка правил таблицы NAT
COMMIT

Если у вас ядро ​​версии 3.18 и новее (вы можете проверить это, запустив uname -r), также добавьте следующие строки перед # drop INVALID packets ...строкой:

-A ufw-before-input -p 47 -j ACCEPT

11. Перезапустите брандмауэр, чтобы обновить наборы правил и применить правила, которые мы добавили к /etc/ufw/*.rulesфайлам: sudo ufw disable && sudo ufw enable

Предупреждение: если у вас есть другие порты, которые вам нужно открыть, например, для HTTPS, если на вашем сервере размещается веб-сайт, вам нужно отдельно добавить эти порты в список разрешенныхsudo ufw allow <PORT>

Томас Уорд
источник
4
Теперь, что, черт возьми, я делаю: D У меня есть такая работа на сервере, я не знаю, как к нему подключиться,
смеется
1
@Jamie Здесь, в Ask Ubuntu, есть масса других документов и записей о подключении к VPN, не говоря уже о документации внутри Network Manager. Этот вопрос касается только настройки VPN и стороны сервера. НЕ соединяющая с ним часть.
Томас Уорд
: D супер быстрый ответ: D Я думаю, что я, возможно, сработал, я просто что-то неправильно установил. При этом UFW активен и разрешает большинство портов. Я
поиграю
@ Джейми, я могу дать вам команды iptables для использования, когда я вернусь домой. Вы предпочитаете iptables ufw.
Томас Уорд
1
iptables / netfilter используется с ufw, ufw лучше подходит для обработки правил и команд для конечных пользователей.
Томас Уорд
19

Пример PPTP VPN в Ubuntu 12.04

Вот краткое руководство по настройке базового PPTP VPN-сервера в Ubuntu 12.04.

Установите необходимые пакеты

                          sudo apt-get install ppp pptpd

Настройте диапазоны PPTP IP на сервере

                          sudo nano /etc/pptpd.conf

Добавьте следующие строки в конец

                          localip 10.89.64.1
                          remoteip 10.89.64.100-150

Это настраивает сервер PPTP на использование IP 10.89.64.1 при распределении диапазона IP-адресов от 10.89.64.100 до 10.89.64.150 клиентам PPTP. Измените их по своему желанию, если они являются частными IP-адресами и не конфликтуют с IP-адресами, уже используемыми вашим сервером.

Настройка DNS-серверов для использования при подключении клиентов к этому серверу PPTP

                          sudo nano /etc/ppp/pptpd-options

Изменить ИЛИ Добавить следующие строки в конце

                          ms-dns 8.8.8.8
                          ms-dns 8.8.4.4

Создать пользователя PPTP

                          sudo nano /etc/ppp/chap-secrets

Добавьте строку внизу, чтобы ваш файл выглядел примерно так:

                          # client    server  secret          IP addresses
                          test        pptpd   abcd1234        *

Настройте NAT для соединений PPTP

Без этого шага вы сможете подключиться, но ваше подключение не сможет загрузить любое веб-соединение с этого сервера.

                          sudo nano /etc/rc.local

Добавьте следующую строку в правую нижнюю часть перед строкой «выход 0»:

                          iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Предполагая eth0, вы можете использовать ifconfigдля проверки имени сети.

Включить IPv4 для пересылки:

                          sudo nano /etc/sysctl.conf

Раскомментируйте следующую строку:

                          net.ipv4.ip_forward=1

Затем перезагрузите конфигурацию:

                          sudo sysctl -p

Перезагрузите свой VPS, и все должно работать без проблем с любого клиента PPTP.


Конфигурация на стороне клиента

Для Mac убедитесь, что вы добавили PPTP VPN-соединение. Кроме того, вам нужно только настроить адрес сервера, имя учетной записи и пароль в настройках аутентификации. Здесь нет боли.

Для Linux NetworkManager добавить VPN-соединения. Убедитесь, что вы добавили PPTP VPN соединение. И конфигурация, которую я использую, здесь:

Как отладить и исправить соединение клиента PPTP / VPN

введите описание изображения здесь

И для винды

введите описание изображения здесь

Касим
источник
Этот метод также работает на несерверной версии Ubuntu 12.04? Какой IP-номер должен использовать клиент для подключения к этой сети VPN?
Расул
Да, это также и для несерверной версии. Вы должны использовать ip сервера на клиенте для подключения к vpn @Rasoul
Qasim
Не работает, сервер Ubuntu 13.04. Клиент застрял ищет DNS.
Кнутоль
@knutole проверьте правильность маршрутизации правил IPTables. Убедитесь, что у вас есть интерфейс en0, и он не назван как-то иначе. Вы должны увидеть публичный IP-адрес в списке.
Ник Вудхэмс
Итак, в вашем примере, какой ip является ip сервера? 10,89,64,1? Тогда в сетевом менеджере Ubuntu клиент перечислит 10.89.64.1 в качестве шлюза?
Dranxo
9

Другие ответы в этой теме были только частичными в моем случае. Вот что у меня сработало на Ubuntu 12.04.3

sudo apt-get install pptpd

Добавьте следующее в /etc/pptpd.conf (IP-адрес не имеет значения, это только IP-адреса для вашего интерфейса ppp0.)

localip 10.0.0.1
remoteip 10.0.0.100-200

Добавить DNS-серверы в / etc / ppp / pptpd-options

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Включить IP-пересылку

sudo vim /etc/sysctl.conf

Раскомментируйте эту строку

net.ipv4.ip_forward=1

Сохранить изменения

sudo sysctl -p /etc/sysctl.conf

Отредактируйте / etc / ppp / chap-secrets, добавьте пользователя VPN в этом формате:

# Secrets for authentication using CHAP
# client    server  secret          IP addresses
username pptpd supersecretpassword *

Перезапустите PPTP

service pptpd restart

Запустите ifconfigи найдите ваш интерфейс по умолчанию, в моем случае это был br0 (я изменил его, чтобы позволить виртуальным машинам на моей физической машине делиться интерфейсом. Возможно, у вас будет en0 )

введите описание изображения здесь

Резервное копирование iptables

iptables-save > ~/iptables.save

Теперь внесите изменения в iptables, используя интерфейс по умолчанию, как показано в ifconfig.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.0.0.0/8 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface br0 -j ACCEPT

Чтобы он оставался постоянным при перезагрузке системы;

sudo apt-get install iptables-persistent

Добавить VPN на клиентском компьютере (Mac)

Системные настройки> Сеть> [+]> VPN

введите описание изображения здесь

введите описание изображения здесь

Затем выберите Настройки аутентификации> Пароль, затем введите свой пароль здесь

введите описание изображения здесь

Ник Вудхэмс
источник
7

Вот довольно приятный проект, который избавляет от боли OpenVPN:

https://github.com/Nyr/openvpn-install

Просто запустите его, и он установит открытый vpn и настроит его. В конце появится файл client.ovpn, который вы можете использовать для настройки вашего клиента. Кажется, работает довольно хорошо.

HappyCoder86
источник
Святая корова. Это просто работает. Интересно, почему он не получил широкого признания.
Маркус