Обучение

Обучение

Life-Hack


Часть 1


Пробуем запустить 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

Теперь наш сервер готов принимать подключения.

Как их настроить в следующей статье.

Report Page