Найпростіший спосіб налаштування 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
Thomas Ward

Відповіді:


24

ОНОВЛЕННЯ : Станом на Sierra, macOS більше не підтримує PPTP vpn. Ця відповідь не вірна для клієнтів macOS Sierra та інших країн.

PPTP через PoPToP - це просто

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

напр

vpnuser pptpd vpnpassword *

Це все, що потрібно для налаштування pptp. Тепер протестуйте його разом із вашим клієнтом OS X.


Мені також цікаво, які значення localip та remoteip є найбезпечнішими, враховуючи, що я збираюся підключитися до цього сервера з будь-якого місця. Однозначно значення за замовчуванням з 192.168.0.і 192.168.1., ймовірно, є одним з найгірших можливих.
sorin

12 травня 13:28:06 zork pppd [9447]: Плагін /usr/lib/pptpd/pptpd-logwtmp.so завантажений. 12 травня 13:28:06 zork pppd [9447]: pppd 2.4.5 розпочато корінь, uid 0 12 травня 13:28:06 zork pppd [9447]: Використання інтерфейсу ppp0 12 травня 13:28:06 zork pppd [9447 ]: Підключіть: ppp0 <--> / dev / pts / 3 травня 12 13:28:36 zork pppd [9447]: Hangup (SIGHUP) 12 травня 13:28:36 zork pppd [9447]: призупинення модему 12 травня 13 : 28: 36 zork pppd [9447]: З'єднання припинено. 12 травня 13:28:36 zork pppd [9447]: Вихід. Він ще не працює! Ваш путівник неповний (поки що);)
сорньте

Так, це не працює.
bkerensa

1
не працювало для мене
Тайлер Гілліс

@SorinSbarnea ці ips є приватними і ніколи не переходять через Інтернет, тому я не знаю, що ви маєте на увазі під "найбезпечнішим". Вам пощастить, якщо вони будуть не такою ж IP-адресою, що і кафе, або робоче місце, з якого ви підключаєтесь. Спробуйте 192.168.42. * :)
Jay _silly_evarlast_ Wren

86

Попередження: PPTP - НЕБЕЗПЕЧНИЙ ПРОТОКОЛ! Не тільки було порушено шифрування, але воно надсилає вашу автентифікацію чітким текстом і легко перехоплюється. Було підраховано, що кількість часу, необхідного для грубої сили пароля, приблизно еквівалентна часу, необхідному для грубої сили одного клавіші DES. Подумайте про використання OpenVPN або іншої архітектури VPN замість PPTP!

Це керівництво я використав для налаштування VPTP-сервера 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. Відкрийте файл улюбленим редактором (мій нано, тому команда для мене є sudo nano /etc/ppp/pptpd-options), і прокоментуйте ці рядки, поставивши #перед ними, якщо ви хочете, щоб це працювало універсально на всіх ОС:

відмовити-пап
відмовитись
відмовити-mschap

Ви можете прокоментувати цей рядок, якщо ви хочете відключити шифрування: require-mppe-128

4: Під час редагування /etc/ppp/pptpd-optionsдодайте DNS-сервери для VPN. У цьому прикладі використовуються сервери OpenDNS:

ms-dns 208.67.222.222
ms-dns 208.67.220.220

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

локаліп 10.99.99.99
дистанційнийп 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), і додайте дані auth.
Формат для /etc/ppp/chap-secrets:

[Ім'я користувача] [Сервіс] [Пароль] [Дозволена IP-адреса]

Прикладом може бути: sampleuser pptpd samplepassword *

7: Перезавантажте pptpd. Запустіть цю команду в терміналі:sudo /etc/init.d/pptpd restart

8: Редагувати /etc/sysctl.conf. Відкрийте файл улюбленим редактором (моє нано, тому команда для мене є 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
-А РОЗМІСТАННЯ -s 10.99.99.0/24 -o eth0 -j МАСКВЕРДА

# Обробляйте правила таблиці NAT
КОМІТЕТ

Якщо у вас є версія ядра 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, не кажучи вже про документацію в Менеджері мережі. Це питання стосується лише налаштування VPN та сервера. НЕ з'єднується з нею деталь.
Thomas Ward

: D супер швидка відповідь: DI думаю, що я, можливо, це розробив, я повинен був просто встановити щось неправильно. Це сказано, що ufw активний і дозволяє більшість портів. Я буду грати з iptables, бачу, чи це мене все одно отримає
Джеймі Хатбер

@Jamie Я можу дати вам команди iptables, якими я користуюся, коли я повертаюся додому, ви віддаєте перевагу iptables перед ufw.
Thomas Ward

1
iptables / netfilter використовується з ufw, ufw просто приємніше з правилами та командами для обробки кінцевих користувачів.
Thomas Ward

19

Приклад PPTP VPN на прикладі Ubuntu 12.04

Ось короткий посібник зі встановлення базового VPTP-сервера PPTP на Ubuntu 12.04.

Встановіть необхідні пакети

                          sudo apt-get install ppp pptpd

Налаштування IPTP-діапазонів PPTP на сервері

                          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 переконайтеся, що ви додали VPTP-з'єднання PPTP. Крім того, вам потрібно лише встановити адресу сервера, ім’я облікового запису та пароль у налаштуваннях аутентифікації. Тут болю немає.

Для Linux, NetworkManager для додавання VPN-з'єднань. Переконайтеся, що ви додали PPTP VPN-з'єднання. І конфігурація, яку я використовую, тут:

Як налагодити і виправити підключення клієнта PPTP / VPN

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

А для Windows

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


Чи працює цей метод також на позасерверному виданні 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.