Как настроить PPTP VPN на моем собственном сервере Ubuntu?

16

Предполагая, что у меня есть виртуальный частный сервер от кого-то вроде Linode , работающего под управлением Ubuntu, как мне легко настроить PPTP VPN, чтобы клиенты Ubuntu могли подключаться к нему?

По умолчанию Ubuntu предлагает подключиться к этим сетям PPTP. Я хочу настроить его так, чтобы к нему было очень легко подключиться (т.е. без установки каких-либо пакетов на клиенте).

Стефано Палаццо
источник

Ответы:

28

Абсолютная минимальная настройка сервера

Ниже приведены инструкции по абсолютному минимуму, необходимые для получения базового PPTP VPN-сервера, работающего под Ubuntu. После этого клиенты смогут подключиться к серверу VPN и направить свой интернет-трафик, чтобы он проходил через сервер в Интернет. Как всегда, ознакомьтесь с полной документацией, чтобы понять, что все делает.

Сначала установите необходимое программное обеспечение:

sudo apt-get install pptpd

Во-вторых, включите ip_forwardв ядре IPv4, раскомментировав соответствующую строку в /etc/sysctl.conf :

sudo sed -i -r 's/^\s*#(net\.ipv4\.ip_forward=1.*)/\1/' /etc/sysctl.conf
# Reload the config file to have the change take effect immediately.
sudo -i sysctl -p

В-третьих, включите NAT (если он еще не включен), чтобы пользователи в частной сети VPN могли направлять свои пакеты в Интернет:

OUTIF=`/sbin/ip route show to exact 0/0 | sed -r 's/.*dev\s+(\S+).*/\1/'`
sudo -i iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE
# Enable NAT on boot from the rc.local script.
CMD="iptables --table nat --append POSTROUTING --out-interface $OUTIF --jump MASQUERADE"
sudo sed -i "\$i$CMD\n" /etc/rc.local

Примечание. В этом руководстве предполагается, что на сервере не настроен брандмауэр. Если на сервере установлен брандмауэр, такой как UFW , обратитесь к соответствующей документации .

В-четвертых, для каждого пользователя VPN создайте учетную запись в файле / etc / ppp / chap-secrets . Замените $USERреальным именем пользователя, которое вы хотите использовать для этого пользователя VPN.

KEY=`head -c 20 /dev/urandom | sha1sum | nawk '{print $1}'`
echo "$USER pptpd $KEY *" | sudo tee -a /etc/ppp/chap-secrets

Наконец, вы готовы ...

Настройте клиента

В апплете Network Manager выберите VPN-подключенияНастроить VPN , затем нажмите Добавить . На следующем экране выберите PPTP для типа VPN, затем нажмите « Создать» .

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

В этом окне введите имя хоста или IP-адрес вашего сервера вместе с именем пользователя и ключом, которые вы добавили в файл / etc / ppp / chap-secrets на сервере.

Теперь нажмите Дополнительно .

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

В этом окне включите «Использовать двухточечное шифрование (MPPE)» и выберите 128-битную защиту. Отключите использование аутентификации MSCHAP (оставьте MSCHAPv2 включенным).

Наконец, нажмите Ok, а затем Сохранить, чтобы закрыть предыдущее окно.

Теперь вы можете проверить VPN-соединение, перейдя в апплет Network Manager → VPN-соединения и выбрав только что созданное вами соединение. Убедитесь, что вы получили сообщение о том, что VPN-соединение успешно установлено, затем перейдите на веб-сайт проверки IP, чтобы убедиться, что ваш IP теперь отображается как IP-адрес сервера.

Если вы получили сообщение о том, что VPN-соединение с сервером не удалось: сначала убедитесь, что вы правильно ввели настройки клиента; во-вторых, проверьте, что клиент имеет сетевое подключение к TCP-порту 1723 на сервере; наконец, проверьте файл журнала / var / log / messages на сервере для дальнейших подсказок. Если ваше VPN-соединение установлено успешно, но вы впоследствии не можете просматривать какие-либо веб-сайты с клиента, обратитесь к этому невероятно полезному диагностическому руководству на веб-сайте pptpd.

Примечания

Если локальная сеть, к которой вы подключены, использует подсети 192.168.0.0/24 и 192.168.1.0/24, вы столкнетесь с проблемами, потому что это то, что сервер PPTP использует по умолчанию. Вам нужно будет настроить PPTP для использования разных подсетей в pptpd.conf .

Есть множество других изменений конфигурации, которые вы можете сделать. Например, все запросы на поиск вашего доменного имени будут по-прежнему запрашиваться на вашем локальном DNS-сервере, а не на PPTP-сервере. Потратьте время, чтобы прочитать всю документацию, чтобы узнать, как изменить этот параметр и многие другие.

Майкл Кропат
источник
4

Этот урок, который я написал , проведет вас через. Это должно помочь вам избежать распространенных ошибок людей, использующих VPS.

Сначала войдите в вашу панель VPS и включите TUN / TAP и PPP . Если у вас нет такой возможности, свяжитесь с вашим Интернет-провайдером, чтобы включить это для вас.

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

Сначала установите этот пакет:

sudo apt-get install pptpd

Поскольку мы не хотим, чтобы наш VPN был общедоступным, мы собираемся создавать пользователей.
Я использую VI, вы можете использовать NANO или любой другой текстовый редактор, который вам нравится

vi /etc/ppp/chap-secrets

Формат

[username] [service] [password] [ip]

пример

john pptpd johnspassword *

* означает, что доступ со всех IP-адресов разрешен, указывайте IP-адрес, только если у вас есть статический.

Редактирование настроек PPTPD

vi /etc/pptpd.conf

Ищите настройки localip и remoteip. Удалите #(символ комментария) для обоих, чтобы эти настройки действительно были распознаны. Измените localip на IP вашего сервера. Если вы не знаете IP своего сервера, вы можете посмотреть в панели управления VPS.

Remoteip - это, в основном, диапазон IP-адресов, который будет назначен клиентам (компьютерам, подключенным к вашей VPN). Например, если вам нужен следующий диапазон IP-адресов: 192.168.120.231-235, ваш VPN-сервер сможет назначать клиентам 192.168.120.232, 192.168.120.233, 192.168.120.234 и 192.168.120.235. Вам решать, что вы хотите использовать для этого поля.

Лично я выбираю эти настройки:

localip 10.0.0.1
remoteip 10.0.0.100-200

Таким образом, я могу подключить около 200 клиентов.

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

ms-dns 8.8.8.8
ms-dns 8.8.4.4

Вы можете добавить это в конец файла или найти эти строки, раскомментировать их и изменить IP-адреса на нужный публичный DNS.

Настроить пересылку

Важно включить переадресацию IP на вашем PPTP-сервере. Это позволит вам пересылать пакеты между общедоступными и частными IP-адресами, которые вы настроили с помощью PPTP. Просто отредактируйте /etc/sysctl.conf и добавьте следующую строку, если она там еще не существует:

net.ipv4.ip_forward = 1

Чтобы сделать изменения активными, запустите sysctl -p

Создайте правило NAT для iptables

Это важная часть: если вы используете VPS, вы, вероятно, не будете использовать eth0, но вместо этого venet0, вы должны проверить, какой у вас интерфейс, запустив ifconfig

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

Если вы также хотите, чтобы ваши клиенты PPTP общались друг с другом, добавьте следующие правила iptables:

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 eth0 -j ACCEPT

Опять же, вам нужно заменить eth0 на venet0, если вы используете VPS.

Я бы порекомендовал бегать

sudo iptables-save

Теперь ваш PPTP-сервер также выступает в качестве маршрутизатора.

Вы можете выполнить эту команду, чтобы служба VPN запускалась при загрузке

systemctl enable pptpd

Я рекомендую установить iptables-persistent, чтобы правила сохранялись даже после перезагрузки

sudo apt-get install -y iptables-persistent
Luka
источник
Ссылка никуда не денется, в основном я никогда не отпущу это доменное имя, во-вторых, это мой хостинг-сервер, в-третьих, поверьте мне: я действительно не могу просто скопировать и вставить учебник, это слишком долго.
Лука
Я боюсь, что мы не принимаем ответы только для ссылок на этом сайте. Таким образом, этот ответ, скорее всего, скоро будет удален, как вы можете видеть, он уже находится в очереди на просмотр (ссылка в моем предыдущем комментарии).
Занна большое спасибо! @Paranoid Panda, тогда вы должны удалить ответ выше моего, у которого есть 2 голосования, потому что он содержит ссылку: P
Лука
1
Проблема заключалась в том, что ответ был только по ссылке. Это означает, что если ссылка по какой-либо причине будет закрыта (даже если она предположительно никогда не прекратится), ответ станет недействительным. Теперь, когда ответ стал самостоятельным (и с помощью ссылки для справки), ответ просто отлично, как есть. Данный ответ в настоящее время удаляется, если только он не будет адаптирован, как ваш пост.
Каз Вулф
1
Добро пожаловать, спасибо за создание учебника. В следующий раз не бойтесь сделать пост такой длины; это полностью приемлемо.
Занна
3

Следуйте этому руководству: PPTP VPN Server с Ubuntu

  1. Под выбором программного обеспечения выберите сервер OpenSSH - для удаленного управления машиной - и ручной выбор пакета для фактического пакета pptpd. Если вам нужно больше услуг, например, если вы хотите использовать компьютер также в качестве веб-сервера, вы, конечно, можете выбрать дополнительное программное обеспечение. По соображениям безопасности я обычно советую людям запускать только одну внешнюю доступную службу на машину, если она настроена в критической среде, но на самом деле это зависит от вас.

  2. В ручном выборе перейдите к неустановленным пакетам> net, где вы найдете pptpd. Выберите его и дважды нажмите «g», чтобы установить пакет.

  3. Дайте завершить установку и перезагрузите систему.

  4. SSH на ваш новый компьютер и запустите sudo aptitude update && sudo aptitude safe-upgradeсначала, чтобы обновить все пакеты. Перезагрузите при необходимости.

  5. Откройте файл pptpd.conf: sudo nano /etc/pptpd.confнастройте параметры IP в нижней части в соответствии с вашими потребностями. Под локальным IP-адресом вы вводите IP-адрес в локальной сети вашего VPN-сервера (если вы не знаете его, введите «sudo ifconfig», и он покажет вам сетевые интерфейсы и назначенные IP-адреса). В связи с этим я рекомендую установить статический IP-адрес в / etc / network / interfaces или в конфигурации вашего маршрутизатора.

  6. Если вы хотите, вы можете изменить имя хоста в /etc/ppp/pptpd-options

  7. Укажите имена пользователей и пароли , которые вы хотите дать доступ к VPN: sudo nano /etc/ppp/chap-secrets. Если вы изменили имя хоста на шаге до того, убедитесь, что вы ввели то же имя хоста, теперь вserver

    Пример:

    # client        server  secret                  IP addresses
    eubolist   pptpd   myübersecretpassword   *
    

    Так как в pptp нет ключа безопасности, безопасность зависит исключительно от пароля. Вот почему вы должны выбрать длинный (например, 32 символа), случайный пароль. Вы можете создать такой пароль здесь.

  8. Теперь нам нужно настроить ip-маскарадинг: sudo nano /etc/rc.local

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

    # PPTP IP forwarding
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    

    При желании я рекомендую защитить ваш SSH-сервер от атак методом перебора:

    #SSH Brute Force Protection
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
    iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j
    

    DROP

    (также должен быть вставлен выше «выхода 0»)

    Возможно, вам придется изменить 'eth 0' на другой интерфейс, в зависимости от того, какой интерфейс настроен для подключения к Интернету на вашем компьютере.

  9. Наконец, раскомментируйте эту строку в /etc/sysctl.conf:

    net.ipv4.ip_forward=1
    
  10. перезагрузка

  11. Если ваш vpn-сервер не подключается напрямую к Интернету, вам может потребоваться перенаправить порт 1723 TCP и GRE на IP-адрес локальной сети вашего vpn-сервера. Обратитесь к руководству по вашему маршрутизатору или к portforward.com за инструкциями для конкретного поставщика. Опять же, вам может потребоваться назначить статический IP-адрес в /etc/network/interfaces.

Илиас
источник