Все настройки выполнены в VPS от hostsailor.com
В правой панели WinCSP открываем папку /root. На пустом месте правой панели жмём правую кнопку мыши, выбираем New -> File. В появившемся окошке вместо “New file” пишем “ipt-set” (без кавычек) и жмём ОК. Будет создан файл с именем ipt-set и откроется окно для его редактирования. Вписываем следующее содержимое:
#!/bin/sh IF_EXT="venet0" IF_OVPN="tun0" OVPN_PORT="443" SQUID_PORT="8080" IPT="/sbin/iptables" IPT6="/sbin/ip6tables" # 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 -o $IF_EXT -j MASQUERADE # 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 # VPN $IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.0.0/24 -j ACCEPT # DNS $IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT # openvpn $IPT -A INPUT -i $IF_EXT -p udp --dport $OVPN_PORT -j ACCEPT # squid $IPT -A INPUT -i $IF_OVPN -p tcp --dport $SQUID_PORT -j ACCEPT $IPT -A INPUT -i $IF_OVPN -p udp --dport $SQUID_PORT -j ACCEPT # FORWARD chain # ######################################### $IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -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
Нужно обратить внимание на следующие моменты:
- сетевой интерфейс называется venet0. Это особенность VPS именно этого хостера. Возможно у вас он называется eth0. Узнать, как же правильно в вашем случае можно введя в консоли команду
ip a
- В получившемся выводе команды будет список сетевых интерфейсов. Один из них носит название lo , это локальная петля. А вот второй, тот, что вам нужен.
OVPN_PORT=»443″
- этот порт мы будем использовать для нашего VPN сервера. Почему именно 443? Мы же настроим VPN и для домашнего компьютера/ноутбука, и для смартфона и, возможно, для рабочего компьютера/ноутбука. Вполне возможно, что ваше устройства окажется в сети (например, корпоративный Wi-Fi), где все порты кроме самых базовых запрещены. 443 точно будет разрешен, а VPN серверу без разницы на каком порту «висеть». Да и активность на этом порту не будет подозрительной.
SQUID_PORT=»8080″
$IPT -A INPUT -i $IF_OVPN -p tcp —dport $SQUID_PORT -j ACCEPT
$IPT -A INPUT -i $IF_OVPN -p udp —dport $SQUID_PORT -j ACCEPT
- подключения к прокси-серверу мы будем принимать на порт 8080 и только от тех, кто уже подключился к VPN, мамкины кулхацкеры идут лесом.
$IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT
- клиенты VPN будут видеть друг друга. Т.е. ваш смартфон будет видеть ваш компьютер если оба они подключились к VPN. Это удобно для расшаривания контента.
Сохраняем получившийся файл. Кликаем на нём правой кнопкой мыши, выбираем Properties и отмечаем галочками все квадратики с буквой X (третий столбик квадратиков). Обратите внимание, в поле Octal получится число 0755. Можно задать свойства файла введя сразу нужное чиасло в это поле, а не выбирая свойства галочками. В дальнейшем мы так и бедуем делать. Я просто буду писать число, которое вам нужно будет вписать в это поле.
Жмём ОК. В консоли PuTTY выполняем команду:
/root/ipt-set
а затем команду:
iptables -L -n
Наши правила применились. Закрываем окно putyy, открываем заново и пробуем подключится. Если подключились, значит вы нигде выше не ошиблись и правила работают. Но работать они будут до перезагрузки сервера. Добавим их в автозапуск. В правой панели WinCSP переходим к папке /etc/systemd/system/ и создаем файл с именем ipt-settings.service со следующим содержимым:
[Unit] Description=Iptables Settings Service After=network.target [Service] Type=oneshot User=root ExecStart=/root/ipt-set [Install] WantedBy=multi-user.target
В свойствах файла (см. выше) указываем права 0644.
Теперь в консоли вводим команду:
systemctl enable ipt-settings
В ответ получим:
Created symlink from /etc/systemd/system/multi-user.target.wants/ipt-settings.service to /etc/systemd/system/ipt-settings.service.
Всё хорошо. Собственно, что мы сделали: мы создали системную службу с именем ipt-settings и добавили её в атозагрузку. Служба при старте запускает файл /root/ipt-set в котором уже и находятся настройки нашего файрволла.
Проверим, что всё работает как задумано. Перезагрузим сервер командой reboot, подключимся к нему и введем команду:
iptables -L -n
Должны получить то, что было на последнем скриншоте (см. выше).