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

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

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

3 ответа

Решение

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

Ниже приведены инструкции по абсолютному минимуму, необходимые для получения базового 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-сервере. Потратьте время, чтобы прочитать всю документацию, чтобы узнать, как изменить этот параметр и многие другие.

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

Следуйте этому руководству: 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,

Другие вопросы по тегам