Сначала о хорошем.
Наконец-то в Linux (UBUNTU) добавили человеческий файрволл, называется ufw. Точнее сделали надстройку над нечеловеческим iptables. Он добавляет правила iptables, но теперь их можно писать так
ufw allow from any to any 8080
или например включить ssh
ufw allow ssh
Правда также просто NAT они не добавили (еще), и его надо вписывать в файл
/etc/ufw/before.rules (это нам позже понадобиться)
Теперь о плохом
Итак, так как пол интернета заблокировано, ставим свой pptp-сервер, простейший VPN. Он хорош тем, что по нему умеют ходить WI-FI роутеры, а значит можно прозрачно для всех клиентов WiFi открыть весь интернет (если VPN в правильном месте конечно).
Итак, я взял Linux Ubuntu 18.04 и старый ноутбук (а вы можете арендовать виртуальный ubuntu на одном из зарубежных хостингов).
Как поднять pptpd
1. Инсталлируем пакет
sudo apt-get install pptpd
Вам надо научиться редактироать текстовые файлыи сохранять их в Ubuntu. Самое просто это редактор nano. Когда написано отредактируете файл ХХХХ надо запустить
sudo nano ХХХХ и потом сохранить и выйти из редактора.
2. Настроим pptp сервер
редактируем файл
/etc/pptpd.conf
Внизу расскоменчиваем строки и можно оставить как там написано, а можно поменять сеть которую мы отдадим под туннель (я в данном примере себе зарезервировал сеть 192.168.99.ХХ
localip 192.168.99.1
remoteip 192.168.99.200-238,192.168.99.245
редактируем файл
/etc/ppp/pptpd-options
Точнее, даже не редактируем а проверяем следующий строчки (должны быть раскомменчены)
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
nodefaultroute
Вкратце, мы запрещаем все виды авторизации кроме mschap и требуем шифрацию (потом можете шифрацию убрать).
Редактируем файл (файл с логинами и паролями)
/etc/ppp/chap-secrets
Там пишем внизу с новой строки
ЛОГИН pptpd ПАРОЛЬ *
Таких строк можно написать много, по количеству пользователей. Пароль лежит в открытом режиме, не используйте пароли, которые вы используете для критических сервисов.
В нашем случае это будет
ivan pptpd ivanidanilo *
Можем запустить pptpd командой
systemctl pptpd start
А вот так надо сделать, чтобы pptpd запускался автоматически.
sudo systemctl enable pptpd
3. Настраиваем сеть
Теперь нам надо настроить сеть.
Во первых, теперь наш компьютер становится роутером и ему надо сказать что можно через себя пропускать пакеты.
В файле /etc/default/ufw
Находим DEFAULT_FORWARD_POLICY="DROP" и меняем на строчку
DEFAULT_FORWARD_POLICY="ACCEPT"
В файле /etc/ufw/sysctl.conf находим net/ipv4/ip_forward=0 и меняем на строчку
net/ipv4/ip_forward=1
В файле /etc/sysctl.conf находим строчку net.ipv4.ip_forward и меняем (раскомменчиваем) на
net.ipv4.ip_forward=1
Применяем все изменения по политике
sudo sysctl -p
Во-вторых, займемся файрволлом
1. если не установлен, устанавливаем ufw (скорее всего будет установлен)
sudo apt-get install ufw
Заодно поставим ssh сервер (удаленно ходить в командную строчку)
sudo apt-get install ssh
2. Теперь начинаем работать с ufw
Активируем
sudo ufw enable
и добавим правил
Пропускать ssh
sudo ufw add ssh
Пропускать авторизацию pptp
sudo ufw add from any to any 1723
Смотрим что получилось командой
sudo ufw status
Должны появиться правила
22/tcp ALLOW Anywhere
1723 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
1723 (v6) ALLOW Anywhere (v6)
Но, у сожалению, это еще не все. Нам надо добавить правило, чтобы ufw пропускал протокол GRE (специальный протокол для туннеля) и указать что надо все что приходит из туннеля "заворачивать (NAT) в внешний IP и выпускать наружу. Сделаем это.
Правим файл /etc/ufw/before.rules
В самом начале вставляем такой вот код для NAT
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
-F
# Forward traffic through eth0 - Change to match you out-interface
-A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't
# be processed
COMMIT
Теперь будем внимательны
вместо 192.168.1.0/24 надо указать нашу сеть, для нас это 192.168.99.0/24, и надо указать имя нашей сетевой карты, которая "смотрит" в интернет. Сейчас научимся узнавать имя карты.
Выполняем команду ifconfig (если система ругнется, то надо поставить пакет net-tools
sudo apt-get install net-tools
Вот так у меня выглядит ifconfig
Слева "имена" интерфейсов (в кружочках). Как узнать наш. Во первых, по выделенному ip-адресу (его должен был дать провайдер). У меня он замазан красным, но он там есть. Во-вторых через интерфейс скрее всего идет трафик (выделено зеленым). Итак, мой интерфейс это enp2s0.
Тогда у нас в итоге получается вот такой вот код
# NAT table rules *nat :POSTROUTING ACCEPT [0:0]
-F
# Forward traffic through enp2s0 - Change to match you out-interface
-A POSTROUTING -s 192.168.99.0/24 -o enp2s0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table rules won't # be processed
COMMIT
Теперь перезапускаем ufw командой
sudo ufw disable && sudo ufw enable
Обращу отдельное внимание на "-F" - этот параметр не приводится в инструкциях, которые я читал, а без него правила nat начинают дублироваться. Смысл в том, что если вы сначала забыли поменять название интерфейса и оставили eth0, то у вас прописалось неверное правило. Вы перезапустили ufw, а потом вспомнили\исправили и перегрузили еще раз. Без "-F" старое правило не сотрется будет стоять перед новым и ничерта работать не будет.
Чтобы понять что у Вас правильные правила nat, нужно набрать команду (ufw этого не покажет)
sudo iptables -t nat --line-numbers -L -v
Вот что примерно вы увидите
Chain POSTROUTING (policy ACCEPT 1827 packets, 129K bytes)
num pkts bytes target prot opt in out source destination
1 0 0 MASQUERADE all -- any enp2s0 192.168.99.0/24 anywhere
2 1668 122K MASQUERADE all -- any enp2s0 192.168.98.0/24 anywhere
Видно, что у вас 2 правила nat и они пронумерованы. Если Вы видите неправильные правила, то можете их удалить по номеру. Вот так удаляется правило номер "1"
sudo iptables -t nat -D POSTROUTING 1
ВСЕ ! На этом установка окончена. Теперь самое интересное. Берем ноубук с Windows\Ubuntu\Android или WiFi роутер и указываем тип соединения pptp логин\пароль те, что вы прописали в сервере и у вас должно установиться VPN-соединение и через него работать Интернет. И хотя pptp считается простейшим VPN, весь интернет будет у вас в руках.
Если что-то не заработало ищите в логах что не так а также привожу ссылки, которыми пользовался я при настройке.
https://www.cviorel.com/2009/02/09/how-to-set-up-a-vpn-server-on-ubuntu/
https://gist.github.com/kimus/9315140
https://forum.antergos.com/topic/1891/pptp-vpn-ufw-how-to-get-it-to-work
http://lubos.rendek.org/remove-all-iptables-prerouting-nat-rules/