- linux notes
- Установка OpenVPN сервера на Ubuntu 12.04
- Как пустить весь трафик на удаленном сервере через OpenVPN?
- Войдите, чтобы написать ответ
- Существует ли приложение для управления дистрибутивами linux на подобие WinBox у Mikrotik?
- Управление VPN подключениями из консоли Linux
- Как создать L2TP VPN подключение в Linux?
- Создаем PPTP VPN подключение в Linux
- Настройка SSTP VPN подключения в командной строке Linux
- Подключение к OpenVPN серверу из консоли Linux
- Как пускать весь трафик на сервере Ubuntu через VPN?
linux notes
Понадобилось мне скрыть свое местонахождение для всего трафика, первым в голову пришел вариант с OpenVPN сервером и решил реализовать, вот краткая заметка о настройке.
Я уже писал о настройке OpenVPN сервера, но тогда задача стояла только связать несколько компьютеров в одну сеть, основная часть описана в этой заметке. Но я бегло накидаю команды для сетапа сервера, за пояснениями можно обратиться к той заметке.
Установка OpenVPN сервера на Ubuntu 12.04
# apt-get update
# apt-get install openvpn -y
# mkdir /etc/openvpn/easy-rsa
# cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
# vim /etc/openvpn/easy-rsa/vars
# cd /etc/openvpn/easy-rsa
# source vars
# ./clean-all
# ./build-ca
# ./build-key-server server1
# ./build-dh
# cd keys/
# cp ca.crt dh1024.pem server1.crt server1.key /etc/openvpn
# cd /etc/openvpn
# cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn
# gzip -d server.conf.gz
# vim server.conf
Изменим:
port 1195 (что бы сразу не палился стандартный 1194 порт, немного усложним задачу хакеров в поиске OpenVPN сервера).
и главное, что добавим это директиву: push redirect-gateway
Данная директива, как раз и означает, что весь трафик клиента будет направлен через OpenVPN сервер (он просто редактирует route и добавляет нужные записи).
Настроим NAT, что бы трафик ходил через сервер:
# iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
# iptables -A FORWARD -d 10.8.0.0/24 -m state -state ESTABLISHED,RELATED -j ACCEPT
# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT -to-source IP.IP.IP.IP
Что бы данные правила сохранились после перезагрузки, добавим данные правила в /etc/rc.local.
И включим форвардинг пакетов в ядре отредактировав файл:
# vim /etc/sysctl.conf
и раскомментируем строчку: net.ipv4.ip_forward=1
И что бы не перезагружаться лишний раз, применим данные изменения:
# echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
Как пустить весь трафик на удаленном сервере через OpenVPN?
Как пустить весь трафик на удаленном сервере через OpenVPN?
Однако нужно оставить 22 порт, для доступа к этому удаленному серверу.
Т.е. грубо говоря я захожу на удаленный сервер (на сервере IP 23.23.23.23) по SSH, но весь исходящий трафик идет через впн (IP 25.25.25.25)
Господа, вы не подз***ались задавать одни и тежи» вопросы?
Здесь смотреть как пускать трафик через VPN, SSH и так будет напрямую ходить
Это как поднять openvpn-server, мне же нужно настроить клиента на удаленном сервере.
Если на удаленном сервере запустить openvpn —config client.conf
Весь траф пойдет через VPN (включая 22 порт), следовательно доступ к серверу потеряется до ребута.
habola: Давай так, попробуем в игру под зае баЙка:
1.Есть сервер
2.Есть клиент
3.Между ними связь, какая *** разница как она пойдет через ВПН или не через ВПН, тебе же нужно законнектится с SSH так коннекться или по IP адресу сервера или уже по IP адресу сервера ну уже в тунеле, логично?
Maksim: ты попробуй на сервере включить впн, и подключится к нему, если бы было все по твоей логике. то я не задавал бы вопросов.
habola: ковырятся в SSH всегда с одной сети будете (ну всегда с с дома, всегда, с работы, всегда с питера и т.д.) если всегда с одной стороны то прописывайте статичный маршрут (с метрикой по меньше) чтобы сервер гонял трафик в вашу сеть чисто, т.е. не через VPN канал
Согласен с предыдущим оратором и его мнением про зайку.
1. Сервер имеет внешний интерфейс.
2. Сервер имеет внутренний интерфейс (впн).
Коннект производится через внешний и впн ходит через внешний.
Что ещё надо подсказать?
Айпи у нас 23.23.23.23 внешний.
Мы к нему коннектимся и получаем всё то, что получаем.
Если коннектимся овер впн, то попадаем в впн.
Если коннектимся овер ссш, то попадаем на сервер.
Попутно отрабатывают правила самого впн и иптаблес.
Войдите, чтобы написать ответ
Существует ли приложение для управления дистрибутивами linux на подобие WinBox у Mikrotik?
Управление VPN подключениями из консоли Linux
В этой статье мы рассмотрим, как создать VPN подключение из консоли Linux и подключиться к удаленному VPN серверу из CLI. Отдельно рассмотрим, как создать L2TP и PPTP VPN подключения.
Как создать L2TP VPN подключение в Linux?
Вы можете использовать NetworkManager для создания VPN подключений L2TP из консоли Linux.
Для установки NetworkManager с поддержкой L2TP выполните команду:
- В CentOS/RHEL/Fedora: # yum -y install NetworkManager-l2tp
- Для установки в Ubuntu/Debian, нужно сначала добавить репозиторий:
$ sudo add-apt-repository ppa:nm-l2tp/network-manager-l2tp
$ sudo apt-get install network-manager-l2tp
Для создания нового VPN подключения L2TP используется команда:
$ nmcli connection add connection.id [VPNConnectionName] con-name [VPNConnectionName] type VPN vpn-type l2tp ifname — connection.autoconnect no ipv4.method auto vpn.data «gateway = [ipv4], ipsec-enabled = yes, ipsec-psk = 0s»$(base64
- [VPNConnectionName] — имя VPN соединения
- [ipv4] — ip адрес VPN сервера L2TP/IPSEC
- [PSK] — ключ PSK (Pre Shared Key)
- [user] — имя пользователя VPN
- [user-password] — пароль
Настройки нового VPN подключения сохраняются в файл /etc/NetworkManager/system-connections/.
Вывести все подключения в NetworkManager:
Показать информацию о созданном VPN подключении:
$ nmcli c show id [VPNConnectionName]
Для Для подключения к VPN серверу из командной строки:к VPN серверу их командной строки:
$ nmcli c up [VPNConnectionName]
При подключении к удаленному VPN серверу может появится ошибка:
Error: Connection activation failed: Could not find source connection.
- Проверьте логи journactl
- Для физического интерфейса (например, ens33 ) задан шлюз по-умолчанию
- Возможно на сервере используется интерфейс br0 , который не используется. Попробуйте удалить его
Чтобы завершить сессию VPN, выполните:
nmcli c down [VPNConnectionName]
Создаем PPTP VPN подключение в Linux
Для установки PPTP клиента VPN в Ubuntu/Debian, установите утилиту:
$ sudo apt-get install pptp-linux network-manager-pptp
Добавьте следующее содержимое:
pty "pptp YOUR_VPN_SERVER --nolaunchpppd --debug" name VPNUsername password VPNPassword remotename PPTP require-mppe-128 require-mschap-v2 refuse-eap refuse-pap refuse-chap refuse-mschap noauth debug persist maxfail 0 defaultroute replacedefaultroute usepeerdns
Сохраните файл, нажав CTLR+X, Y -> Enter.
$ chmod 600 /etc/ppp/peers/PPTP
Чтобы подключится к PPTP VPN серверу, выполните:
Настройка SSTP VPN подключения в командной строке Linux
Вы можете настроить SSTP подключение к VPN серверу в Linux. В Ubuntu можно использовать пакет sstp для nmcli.
$ sudo add-apt-repository ppa:eivnaes/network-manager-sstp
$ sudo apt update
$ sudo apt install network-manager-sstp sstp-client
Для подключения к SSTP серверу используется команда:
$ sudo sstpc —cert-warn —save-server-route —user —password usepeerdns require-mschap-v2 noauth noipdefault nobsdcomp nodeflate
Можно сохранить настройки подключения к VPN серверу в текстовый файл:
remotename sstptest linkname sstptest ipparam sstptest pty "sstpc --ipparam sstptest --nolaunchpppd sstpvpn.vmblog.ru" name user1 plugin sstp-pppd-plugin.so sstp-sock /var/run/sstpc/sstpc-sstp-test usepeerdns require-mppe require-mschap-v2 refuse-eap refuse-pap refuse-chap refuse-mschap nobsdcomp nodeflate
Имя пользователя и пароль для аутентификации на VPN сервере нужно задать в файле /etc/ppp/chap-secrets
# Secrets for authentication using CHAP # client server secret IP addresses user1 * xxxxxx *
Теперь для подключения к SSTP серверу с помощью настроенного подключения, выполните:
Чтобы отправить весь трафик через VPN подключение, нужно добавить маршрут:
$ sudo route add default (обычно это устройствл ppp0 )
Или только трафик к определенным подсетям/хостам:
$ sudo route add -net 192.168.2.0/24 dev ppp0
Подключение к OpenVPN серверу из консоли Linux
Для установки пакета OpenVPN в Linux:
- Debian, Ubuntu, Linux Mint, Kali Linux:
$ sudo apt-get update && apt-get upgrade
$ sudo apt-get install openvpn - RedHat, Fedora, CentOS, Oracle, Rocky Linux:
# yum install epel-release –y
# yum install openvpn –y
Для подключения к OpenVPN серверу вам понадобится файл конфигурации ovpn. Чтобы подключиться к VPN с помощью ovpn файла:
$ sudo openvpn —config /etc/openvpn/client.ovpn —daemon
Введите имя пользователя и пароль (если настроена AD аутентификация для OpenVPN).
Проверьте что VPN подключение установлено:
Чтобы завершить OpenVPN подключение, нажмите CTRL+C (если клиент запущен без параметра –daemon) или выполните команду:
Чтобы OpenVPN подключение автоматически устанавливалось при старте Linux, нужно создать отдельный юнит systemd:
$ sudo vi /lib/systemd/system/OpenVPNClientCorp.service
[Unit] Description=Hide.me OpenVPN Client Corp After=multi-user.target [Service] Type=idle ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client.ovpn [Install] WantedBy=multi-user.target
Измените разрешения на файл:
$ sudo chmod 644 /lib/systemd/system/OpenVPNClientCorp.service
Добавьте юнит через systemctl
$ sudo systemctl daemon-reload
$ sudo systemctl enable OpenVPNClientCorp.service
Как пускать весь трафик на сервере Ubuntu через VPN?
Доброго времени суток, прошу помощи советом, как мне реализовать схему как я нарисовал ниже?
Нужно основной сервер закрыть шлюзом.
Если входящие запросы я могу перенаправлять на основной сервер в nginx из шлюза так же через nginx, то вот с настройкой VPN у меня проблема.
На шлюз я установил и настроил OpenVpn по данной статье
Затем я пытаюсь подключить в качестве клиента основной сервер данной командой:
openvpn —config client1.ovpn
Через Tunnelblick все работает корректно.
После у меня вот такие сообщения, пауза без возможности ввести какую либо команду в терминале и я выхожу из терминала.
Fri Nov 13 14:19:43 2020 OpenVPN 2.4.4 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on May 14 2019 Fri Nov 13 14:19:43 2020 library versions: OpenSSL 1.1.1 11 Sep 2018, LZO 2.08 Fri Nov 13 14:19:43 2020 Outgoing Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication Fri Nov 13 14:19:43 2020 Incoming Control Channel Authentication: Using 256 bit message hash 'SHA256' for HMAC authentication Fri Nov 13 14:19:43 2020 TCP/UDP: Preserving recently used remote address: [AF_INET]:7653 Fri Nov 13 14:19:43 2020 Socket Buffers: R=[212992->212992] S=[212992->212992] Fri Nov 13 14:19:43 2020 UDP link local: (not bound) Fri Nov 13 14:19:43 2020 UDP link remote: [AF_INET]:7653 Fri Nov 13 14:19:43 2020 NOTE: UID/GID downgrade will be delayed because of --client, --pull, or --up-delay Fri Nov 13 14:19:43 2020 TLS: Initial packet from [AF_INET]:7653, sid=2c36f517 9738c2a0 Fri Nov 13 14:19:43 2020 VERIFY OK: depth=1, CN=Easy-RSA CA Fri Nov 13 14:19:43 2020 VERIFY KU OK Fri Nov 13 14:19:43 2020 Validating certificate extended key usage Fri Nov 13 14:19:43 2020 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication Fri Nov 13 14:19:43 2020 VERIFY EKU OK Fri Nov 13 14:19:43 2020 VERIFY OK: depth=0, CN=server Fri Nov 13 14:19:43 2020 Control Channel: TLSv1.3, cipher TLSv1.3 TLS_AES_256_GCM_SHA384, 2048 bit RSA Fri Nov 13 14:19:43 2020 [server] Peer Connection Initiated with [AF_INET]:7653 Fri Nov 13 14:19:44 2020 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1) Fri Nov 13 14:19:44 2020 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 208.67.222.222,dhcp-option DNS 208.67.220.220,route 10.8.0.1,topology net30,ping 10,ping-restart 120,ifconfig 10.8.0.6 10.8.0.5,peer-id 0,cipher AES-256-GCM' Fri Nov 13 14:19:44 2020 OPTIONS IMPORT: timers and/or timeouts modified Fri Nov 13 14:19:44 2020 OPTIONS IMPORT: --ifconfig/up options modified Fri Nov 13 14:19:44 2020 OPTIONS IMPORT: route options modified client_loop: send disconnect: Broken pipe
Заново подключиться могу к серверу только после перезагрузки сервера через ЛК у хостера.
Как решить такую проблему или есть варианты более правильной реализации?