Настройте самостоятелно хоствана VPN с помощта на Wireguard
А VPN (виртуална частна мрежа) позволява на потребителя да се свърже с частна мрежа отдалечено, сякаш компютърът на потребителя е директно свързан към частната мрежа. Технологията първоначално е разработена, за да позволи отдалечен достъп до вътрешна частна мрежа на компанията за служители, които всъщност не присъстват на мястото на вътрешната мрежа.
VPN сървър е разположен на мястото на вътрешната мрежа. Този сървър е в публичната мрежа и може да бъде достъпен с помощта на VPN клиент от служителя. За свързване с VPN сървъра е необходимо удостоверяване. Комуникацията между VPN сървъра и VPN клиента е защитена с помощта на протокол за тунелиране. Имайте предвид, че тази комуникация може или не може да бъде криптирана, но обикновено в повечето VPN протоколи е криптирана.
Друга употреба на VPN е да придобиете анонимност при достъп до Интернет или за заобикаляне на географските ограничения, наложени при достъп до някои уебсайтове. В такива случаи мрежата, към която потребителят иска да се свърже, не е частна мрежа, а вместо това е Интернет.
През годините са разработени много VPN протоколи. Тези протоколи използват различни протоколи за тунелиране и алгоритми за криптиране за комуникация между сървъра и клиента.
Един такъв протокол, който набира широко разпространение напоследък, е Wireguard. Wireguard е по-лек, по-прост и по-ефективен от добре познатите традиционно използвани VPN протоколи като OpenVPN, IPSec. Той вече е внедрен за Windows, Mac OS и голям брой Linux дистрибуции. В Linux той е реализиран като модул на ядрото. Предлага се в официалните хранилища на Ubuntu 20.04.
В тази статия ще видим как да настроите Wireguard VPN сървър и клиент в Ubuntu 20.04.
Инсталация
За тази статия настройвам Wireguard сървър на Ubuntu 20.04 Linode и Wireguard Client на моята локална машина с Ubuntu 20.04.
Пакетът защита на проводниците
инсталира както Wireguard сървър, така и клиент. Изпълнете следната команда както на сървърната машина, така и на клиентската машина.
sudo apt инсталирате wireguard
Конфигурация на сървъра
Ключове за сигурност
Трябва да генерираме набор от двойки публичен/частен ключ за да удостоверите и защитите връзката на Wireguard. Това може да стане с помощта на следните команди:
sudo su cd /etc/wireguard umask 077 wg genkey | тройник private_key | wg pubkey > публичен_ключ
Имайте предвид, че изпълняваме всички задачи за конфигуриране като суперпотребител. Причината е, че достъпът до директорията /etc/wireguard
е забранено за нормални потребители и достъпът до директория не може да бъде получен само с привилегии sudo за нормален потребител.
След това задаваме маската за създаване на файл на 077
. Това означава, че всеки път, когато се създаде нов файл в тази папка от някакъв процес, неговите разрешения ще бъдат автоматично маскирани с 077. Напр. ако в тази папка е създаден файл с разрешения 777, той автоматично се маскира и разрешенията на практика стават 700. Това се прави така, че само собственикът на файла има всички разрешения за файла, а всички останали нямат разрешения.
На следващия ред, ние генерираме двойката публичен/частен ключ за сървъра. Те се записват във файлове частен_ключ
и публичен_ключ
. За да видите ключовете, изпълнете:
cat private_key cat public_key
Копирайте частния ключ, той ни трябва в следващата стъпка.
Забележка: Никога не споделяйте личния си ключ публично!
Конфигурационен файл
Нека създадем конфигурационен файл за сървъра Wireguard. Можете да изберете произволно име за файла. Ще създадем файл wg0.conf
в този пример.
vim wg0.conf
Добавете следното към файла.
[Интерфейс] Адрес = 10.20.43.1/24 SaveConfig = true ListenPort = 51190 PrivateKey = PostUp = iptables -A НАПРЕД -i wg0 -j ACCEPT; iptables -t nat -A ПОСТРАУТУРАНЕ -o -j МАСКАРАД; ip6tables -A НАПРЕД -i wg0 -j ПРИЕМАМ; ip6tables -t nat -A ПОСТРАУТУВАНЕ -o eth0 -j MASQUERADE PostDown = iptables -D НАПРЕД -i wg0 -j ПРИЕМАНЕ; iptables -t nat -D ПОСТРАУТУВАНЕ -o eth0 -j МАСКАРАДА; ip6tables -D НАПРЕД -i wg0 -j ПРИЕМАНЕ; ip6tables -t nat -D ПОСТРАУТУВАНЕ -o -j МАСКАРАД
Поставете частния ключ, който преди това копирахме в ред 5 в кода по-горе.
Трябва да конфигурираме Wireguard на различна (виртуална) подмрежа отколкото IP адреса на сървъра. Тук използвах 10.20.43.1 за сървъра и ще използвам 10.20.43.2 за клиента. Тук може да се използва всяка подмрежа. За да получите IP адреса на сървъра и интерфейса, изпълнете:
ifconfig
Забележете IP адреса на сървъра. Това се изисква по време на конфигурацията на клиента.
Интерфейсът, използван от сървъра, както се вижда на изображението по-горе, е eth0
. Името на интерфейса може да се различава в зависимост от мрежата на потребителя, може да бъде wlan0
или wlp2s0
в случай, че потребителят е свързан към WiFi мрежа с помощта на безжична карта.
Заменете в
Публикувате
и PostDown
с вашия интерфейс; в този пример е така eth0
.Публикувате
и PostDown
директивите се използват за уточняване кои команди трябва да се изпълняват, когато сървърът стартира и съответно спре. В нашия пример ние използваме iptables
команда за задаване на IP правила, така че IP адресът на сървъра да се споделя от клиентите. Правилата ще отпаднат, след като сървърът спре.
Запазете и излезте от файла. Когато използвате vim, натиснете Esc, след което въведете :wq
и натиснете Въведете за запазване и излизане.
Ако използвате a ufw
защитна стена на сървъра, трябва да разрешим UDP връзки към порта за VPN сървър, 51190.
ufw позволете 51190/udp
Стартиране на услугата
Сега, когато конфигурацията приключи, можем да стартираме услугата Wireguard VPN.
За да активирате услугата да стартира при стартиране, стартирайте:
systemctl активира wg-quick@wg0
Имайте предвид, че тук wg0
е името на конфигурационния файл.
Да започна услугата, стартирайте:
услуга wg-quick@wg0 start
Потвърдете че услугата е стартирала успешно:
състояние на услугата wg-quick@wg0
Проверете дали интерфейсът който създадохме в конфигурационния файл, стартира с помощта на IP командата.
ip шоу wg0
Wireguard VPN сървърът вече е настроен и работи. Нека конфигурираме клиента сега.
Конфигурация на клиента
Конфигурацията на клиента за Wireguard е повече или по-малко същата като конфигурацията на сървъра. Генерираме ключовете за клиента и след това създаваме конфигурационен файл.
Ключове за сигурност
За генериране на публичен/частен ключ сдвоете за клиента, изпълнете:
sudo su cd /etc/wireguard umask 077 wg genkey | tee client_private_key | wg pubkey > client_public_key
Публичният и частният ключ за клиента вече се генерират съответно във файлове клиент_частен_ключ
и клиент_публичен_ключ
.
Проверете дали са създадени, като използвате котка
команда.
cat client_private_key cat client_public_key
Копирайте показания частен ключ, тъй като трябва да го добавим към конфигурационния файл за клиента.
Конфигурационен файл
Създайте конфигурационния файл с всяко име, което пожелаете. Ще го създадем с името wg0-клиент
за този пример.
vim wg0-client.conf
Добавете следната конфигурация.
[Интерфейс] # IP адрес и частен ключ на клиентския адрес = 10.20.43.2/24 PrivateKey = [Peer] # Публичен ключ, IP адрес и порт на сървъра PublicKey = Крайна точка = :51190 Разрешени IP адреси = 0.0.0.0/0, : :/0
Въведете адреса на подмрежата за клиента. Както беше описано по-горе, ние използваме 10.20.43.2
за клиента в този пример.
Добавете частния ключ на клиента генерирани в предишната стъпка в ред 4 в конфигурационния код по-горе.
Под „Peer“ добавяме информация за Wireguard VPN сървъра искаме да се свържем.
Въведете публичния ключ на сървъра. Влез в IP адрес на сървъра, което отбелязахме по-рано, и порт в дадения формат срещу Крайна точка. Това е портът, който посочихме в конфигурационния файл на сървъра и на който стартира VPN услугата на сървъра.
Разрешените IP адреси трябва да бъдат въведени, както са дадени (0.0.0.0/0), така че всяка заявка за динамичен публичен IP, използван от клиента, винаги ще препраща към VPN сървър.
Запазете и излезте от файла. Когато използвате vim, натиснете Esc, след което въведете :wq
и натиснете Въведете за запазване и излизане.
Активирайте клиентската услуга да работи с всяко зареждане и да го стартира.
systemctl активира wg-quick@wg-client услуга wg-quick@wg-client start
Потвърдете ако услугата е започнала.
статус на услугата wg-quick@wg-client
Добавяне на Peer към сървъра
Сега имаме и VPN сървъра и клиента. Въпреки това, защитен тунел между двете не се установява, освен ако не установим peer-to-peer връзка между сървъра и клиента.
Върни се към сървъра. първо, спрете VPN услугата.
услуга wg-quick@wg0 стоп
След това отворете конфигурационния файл на добавете конфигурация за партньора (клиент).
vim /etc/wireguard/wg0.conf
Добавяне следните редове към файла.
[Peer] PublicKey = Разрешени IP адреси = 10.20.43.2/32
Сега, стартирайте отново VPN услугата.
услуга wg-quick@wg0 start
Това е! Това е цялата конфигурация, необходима за настройка на Wireguard VPN клиент и сървър. Нека сега да тестваме нашия VPN.
Тестване на VPN
Първо, нека направим прост ping от клиента към сървъра, за да се уверим, че комуникацията на VPN тунела работи. Изпълнете следното на клиента:
пинг 10.20.43.1
Следващия, отворете уеб браузър и отворете всеки уебсайт за да проверите дали можете да се свържете с интернет от клиентската машина. Можете също да проверите вашата интернет свързаност от командния ред, като използвате wget
.
wget
Сега проверихме тунелната свързаност и интернет свързаността. Ако и двете работят, сега трябва да се уверим, че целият интернет трафик, идващ към клиента, преминава през сървъра.
За това просто трябва да проверим IP адреса на клиента, както се вижда от Интернет. Един от начините да го направите е да отидете на whatsmyip.org. Или от командния ред, можем да потърсим друга подобна услуга, наречена IP информация, с помощта на Curl.
Изпълнете следното на клиентската машина
curl //ipinfo.io/ip
да. Това е публичният IP адрес на Linode, където се хоства VPN сървъра. Ето как се постига анонимност с помощта на VPN, тъй като в целия интернет сега се вижда IP на VPN сървъра, а не на вашия компютър.
Заключение
Лекотата на настройка е едно от най-важните предимства на Wireguard пред традиционния VPN софтуер като OpenVPN, който се нуждае от по-високо ниво на познания за работа в мрежа и маршрутизиране за настройка. Липсва обаче подробна официална документация за Wireguard, което може да причини проблеми, ако вашата настройка на Wireguard хвърля грешки или не работи според очакванията.
Независимо от това, Wireguard е отличен избор, ако искате самостоятелно хоствана VPN за сигурна комуникация през интернет. За да научите повече за Wireguard и протоколите и технологиите, които използва, можете да разгледате официалния сайт.