Самый простой способ настроить 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.


Мне также интересно, какие значения 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, который вы можете использовать для настройки вашего клиента. Кажется, работает довольно хорошо.


Святая корова. Это просто работает. Интересно, почему он не получил широкого признания.
— Маркус
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.