Как Создать и Настроить VPN сервер в Linux | Wireguard

Опубликовано  31 01 2021 
3 min на чтение

Речь пойдет о шифровании трафика в сети и обходе блокировок, рассмотрю несколько способов.

Гуляем по сети, как рыбы в океане :).

Ssh туннель

Установить ssh.

yay -S openssh

Допустим на вашем сервере запущен tor или прокси, через ssh легко можно пробросить порт на котором это работает. Про настройку ssh я писал в ctlos wiki.

Установить tor.

yay -S tor torsocks
ssh -L 9050:127.0.0.1:9050 -p 22 cretm@134.122.88.241 -N
  • 127.0.0.1(localhost) — локальный адрес.
  • Первый 9050, локальный порт.
  • Второй 9050, на сервере.
  • -N говорит не открывать соединение, а только проброс.

Теперь локально доступен 9050 и можно открыть на нем chromium в другом терминале.

chromium --proxy-server='socks://127.0.0.1:9050'

Или посмотреть ip через torify, или запустить шелл и выполнять все через tor.

torify curl ident.me
# или
torify zsh

Sshuttle

Позволяет завернуть весь трафик через ssh сервер.

Установка.

yay -S sshuttle

Запуск.

sshuttle --dns -r cretm@134.122.88.241 -x 134.122.88.241 0/0

Wireguard

Я все проделываю скриптом easy-wg-quick.

Сервер

yay -S wireguard-tools gawk grep iproute2 net-tools qrencode wget

# если ядро lts
yay -S wireguard-lts

mkdir vpn && cd vpn

wget -O vpn.sh https://raw.githubusercontent.com/burghardt/easy-wg-quick/master/easy-wg-quick

chmod +x vpn.sh

Выполните reboot после установки.

Можно задать конкретный порт и ip. Узнать.

  • Если за nat curl ident.me
  • Нет nat ip a

Путем отправки данных в файлы.

curl ident.me > extnetip.txt
# или
echo 134.122.88.241 > extnetip.txt

echo 51820 > portno.txt

Создание конфигурации и клиента.

./vpn.sh comp

Запуск, остановка, статус работы.

sudo wg-quick up ./wghub.conf
sudo wg-quick down ./wghub.conf
sudo wg show

Открыть порт если установлен файрвол, рестарт и просмотр статуса.

sudo ufw allow 51820/udp
sudo ufw reload
sudo ufw status
netstat -tulpn

Если на сервере iptables.

sudo iptables --policy INPUT ACCEPT
sudo iptables -F
sudo iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
sudo iptables -A INPUT -p udp --dport 51820 -m state --state NEW -j ACCEPT
sudo netfilter-persistent save

Удалить правило, где 5 линия. В данном случае удалять ничего не нужно, просто знайте, как работает удаление.

sudo iptables --list --line-numbers
sudo iptables -D INPUT 5
sudo netfilter-persistent save

Создаем второго клиента для мобилки. Сканируем qr в приложении wireguard и перезапускаем сервер.

./vpn.sh mob
sudo wg-quick down ./wghub.conf
sudo wg-quick up ./wghub.conf
sudo wg show

Вывод qr кода.

qrencode -t ansiutf8 < wgclient_mob.conf

Основной конфиг с инфой о клиентах.

cat wghub.conf

Можно добавить в автостарт systemd.

sudo cp wghub.conf /etc/wireguard/wghub.conf
sudo systemctl enable --now wg-quick@wghub
systemctl status wg-quick@wghub

Клиент

Для клиента Arch Linux. Настройка на вашем компе.

yay -S wireguard-tools
sudo nano /etc/wireguard/wg0.conf

Скопировать с сервера содержимое файла wgclient_comp.conf, пример.

# 10: comp > wgclient_comp.conf
[Interface]
Address = 10.256.112.10/24, fd51:9999:3322:6414::10/64
DNS = 1.1.1.1, 2606:4700:4700::1111
PrivateKey = UGdsdfgsdgdfgiJRhlQdX7kQ=

[Peer]
PublicKey = wvr/gmg/FJN0dfgdfhdfhudRLdIdn+2DQ=
PresharedKey = /DXNfgNi2iMY5jrdgdfgdgu5tyIX94Xvss=
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = 134.111.10.21:51820
PersistentKeepalive = 25

Включить сервис systemd и добавить в автостарт если нужно.

sudo systemctl start wg-quick@wg0

sudo systemctl enable wg-quick@wg0

sudo systemctl enable --now systemd-resolved

Имейте ввиду если на сервере, что-то не так, то и у вас не будет интернета при включенном сервисе. Остановить, выключить.

sudo systemctl stop wg-quick@wg0

sudo systemctl disable wg-quick@wg0

Проверить ip можно на 2ip.ru, в терминале.

curl ident.me

Проверить скорость интернета.

curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python -
Top