Шаг 6 - Настройка сетевой конфигурации сервера
Есть некоторые аспекты сетевой конфигурации сервера, которые необходимо настроить, чтобы OpenVPN мог правильно маршрутизировать трафик через VPN. Первым из них является переадресация IP , метод определения, куда следует направлять IP-трафик. Это важно для функциональности VPN, которую будет предоставлять ваш сервер.
Измените настройки IP-переадресации вашего сервера по умолчанию, изменив /etc/sysctl.conf
файл:
sudo nano /etc/sysctl.conf
Внутри найдите закрепленную строку с комментариями net.ipv4.ip_forward
. Удалите символ « # » в начале строки, чтобы раскомментировать этот параметр:
net.ipv4.ip_forward=1
Сохраните и закройте файл, когда закончите.
Чтобы прочитать файл и изменить значения для текущего сеанса, введите:
sudo sysctl -p
net.ipv4.ip_forward = 1
Если вы следовали руководству по начальной настройке сервера Debian 9, указанному в предварительных требованиях, у вас должен быть установлен брандмауэр UFW. Независимо от того, используете ли вы брандмауэр для блокировки нежелательного трафика (что вам почти всегда следует делать), для этого руководства вам понадобится брандмауэр, чтобы управлять частью трафика, поступающего на сервер. Некоторые правила брандмауэра необходимо изменить, чтобы включить маскировку, концепцию iptables, которая обеспечивает динамическую трансляцию сетевых адресов (NAT) на лету для правильной маршрутизации клиентских подключений.
Перед тем как открыть файл конфигурации брандмауэра для добавления правил маскировки, вы должны сначала найти общедоступный сетевой интерфейс вашего компьютера. Для этого наберите:
ip route | grep default
Ваш публичный интерфейс - это строка, найденная в выходных данных этой команды, которая следует за словом «dev». Например, в этом результате показан интерфейс с именем eth0
, выделенным ниже:
default via 203.0.113.1 dev eth0 onlink
Когда у вас есть интерфейс, связанный с вашим маршрутом по умолчанию, откройте /etc/ufw/before.rules
файл, чтобы добавить соответствующую конфигурацию:
sudo nano /etc/ufw/before.rules
Правила UFW обычно добавляются с помощью ufw
команды. Однако правила, перечисленные в before.rules
файле, считываются и вводятся в действие до загрузки обычных правил UFW. Вверху файла добавьте выделенные строки ниже. Это установит политику по умолчанию для POSTROUTING
цепочки в nat
таблице и замаскирует любой трафик, поступающий из VPN. Не забудьте заменить eth0
в -A POSTROUTING
строке ниже интерфейс, который вы нашли в приведенной выше команде:
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Сохраните и закройте файл, когда закончите.
Затем вам нужно указать UFW разрешить пересылку пакетов по умолчанию. Для этого откройте /etc/default/ufw
файл:
sudo nano /etc/default/ufw
Внутри найдите DEFAULT_FORWARD_POLICY
директиву и измените значение с DROP
на ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Сохраните и закройте файл, когда закончите.
Затем настройте сам брандмауэр, чтобы разрешить трафик в OpenVPN. Если вы не меняли порт и протокол в /etc/openvpn/server.conf
файле, вам нужно будет открыть UDP-трафик для порта 1194
. Если вы изменили порт и / или протокол, замените здесь выбранные вами значения.
Если вы забыли добавить порт SSH, следуя предварительному руководству, добавьте его сюда:
sudo ufw allow 1194/udp
sudo ufw allow OpenSSH
После добавления этих правил отключите и снова включите UFW, чтобы перезапустить его и загрузить изменения из всех файлов, которые вы изменили:
sudo ufw disable
sudo ufw enable
Теперь ваш сервер настроен для правильной обработки трафика OpenVPN.
Шаг 7 - Запуск и включение службы OpenVPN
Наконец-то вы готовы запустить службу OpenVPN на своем сервере. Это делается с помощью утилиты systemd systemctl
.
Запустите сервер OpenVPN, указав имя файла конфигурации в качестве переменной экземпляра после имени файла модуля systemd. Вызывается файл конфигурации для вашего сервера , поэтому добавьте в конец файла модуля при его вызове:/etc/openvpn/server.conf
@server
sudo systemctl start openvpn@server
Еще раз проверьте, что служба запустилась успешно, набрав:
sudo systemctl status openvpn@server
Если все прошло хорошо, результат будет выглядеть примерно так:
● openvpn@server.service - OpenVPN connection to server
Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
Main PID: 5856 (openvpn)
Tasks: 1 (limit: 512)
CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
└─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid
Вы также можете проверить tun0
доступность интерфейса OpenVPN , набрав:
ip addr show tun0
Это выведет настроенный интерфейс:
4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
link/none
inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
valid_lft forever preferred_lft forever
После запуска службы включите ее, чтобы она запускалась автоматически при загрузке:
sudo systemctl enable openvpn@server
Ваш сервис OpenVPN теперь запущен и работает. Однако, прежде чем вы сможете начать его использовать, вы должны сначала создать файл конфигурации для клиентской машины. В этом руководстве уже рассказывалось, как создавать пары сертификат / ключ для клиентов, а на следующем шаге мы продемонстрируем, как создать инфраструктуру, которая будет легко создавать файлы конфигурации клиентов.