Анонимность в интернете своими руками. Установка и настройка SoftEther VPN Server (Часть2)
Продолжение.
Пробуем запустить dnsmasq
systemctl restart dnsmasq
и смотрим состояние
systemctl status dnsmasq
Должно быть типа такого:
Если не так, то смотрим в лог /var/log/messages
Если есть ошибка "warning: interface tap_softether does not currently exist", то либо вы ошиблись где-то в настройках ранее, либо не запущен VPN-сервер. Как запустить, написано выше.
Если ошибка "failed to bind DHCP server socket: Address already in use", то смотрим вывод команды
netstat -anlp | grep -w LISTEN
Скорее всего увидим что-то типа:
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/init
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 19819/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 110/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 196/sendmail: accep
tcp6 0 0 :::111 :::* LISTEN 15492/rpcbind
tcp6 0 0 :::80 :::* LISTEN 104/httpd
tcp6 0 0 :::53 :::* LISTEN 19819/dnsmasq
tcp6 0 0 :::22 :::* LISTEN 110/sshd
Видим, что висит процесс dnsmasq и занимает интерфейс. Запоминаем число перед /dnsmasq (в моём случае это 19819) и используем его в команде
kill 19819
После этого пробуем
systemctl start dnsmasq
systemctl status dnsmasq
Всё должно стать хорошо.
Теперь открываем наш скрипт запуска VPN-сервера /etc/rc.d/init.d/sevpnserver и редактируем по образцу (можно просто очистить содержимое и вставить отсюда):
#!/bin/sh
#
# chkconfig: 2345 20 80
# description: SoftEther VPN Server
#
#
#
#
DAEMON=/etc/sevpn/vpnserver/vpnserver
LOCK=/var/lock/vpnserver/vpnserver
TAP_ADDR=10.8.0.1
test -x $DAEMON || exit 0
case "$1" in
start)
echo Starting SoftEther VPN Server...
$DAEMON start
touch $LOCK
sleep 3
/sbin/ifconfig tap_softether $TAP_ADDR
sleep 3
systemctl restart dnsmasq
;;
stop)
echo Stopping SoftEther VPN Server...
$DAEMON stop
rm $LOCK
;;
restart|reload)
echo Reloading SoftEther VPN Server...
$DAEMON stop
sleep 5
$DAEMON start
sleep 3
/sbin/ifconfig tap_softether $TAP_ADDR
sleep 3
systemctl restart dnsmasq
;;
*)
echo Usage: $0 "{start|stop|restart}"
exit 1
esac
exit 0
По традиции скрипты и конфиги с нормальным форматированием здесь
Сохраняем.
Добавим скрипт в автозагрузку
chkconfig sevpnserver on
Проверить, что скрипт добавился можно командой
chkconfig --list
В выводе команды должна присутствовать строчка
sevpnserver 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Теперь идём в статью про файрволл и маршрутизацию и делаем всё, как там написано, но с единственным отличием: содержимое файла ipt-set взять указанное ниже.
В переменную IP_EXT вместо 123.123.123.123 вписываем IP-адрес своего VPS.
#!/bin/sh
IF_EXT="venet0"
IF_VPN="tap_softether"
VPN_PORT="443"
IPT="/sbin/iptables"
IPT6="/sbin/ip6tables"
IP_EXT="123.123.123.123"
# flush
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X
$IPT6 --flush
# loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT6 -P INPUT DROP
$IPT6 -P OUTPUT DROP
$IPT6 -P FORWARD DROP
# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT
# #########################################
# SNAT - local users to out internet
$IPT -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to-source $IP_EXT
# INPUT chain
# #########################################
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ssh
$IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT
# DNS
$IPT -A INPUT -i $IF_VPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT
# vpn
$IPT -A INPUT -i $IF_VPN -p icmp -s 10.8.0.0/24 -j ACCEPT
$IPT -A INPUT -i $IF_EXT -p tcp --dport $VPN_PORT -j ACCEPT
$IPT -A INPUT -p udp --dport 500 -j ACCEPT
$IPT -A INPUT -p udp --dport 4500 -j ACCEPT
$IPT -N syn_flood
$IPT -A INPUT -p tcp --syn -j syn_flood
$IPT -A syn_flood -m limit --limit 500/s --limit-burst 2000 -j RETURN
$IPT -A syn_flood -j DROP
# FORWARD chain
# #########################################
$IPT -A FORWARD -i $IF_VPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT -o $IF_VPN -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT
# OUTPUT chain
# #########################################
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
В Server Manager откроем «Encryption and Network»
И выставляем опции как на скриншоте (обведено красным)
Жмём Ок.
Перезагрузим VPS командой из консоли
reboot
Теперь наш сервер готов принимать подключения.
Как их настроить, читайте здесь.