Найти тему
lab240

Поднимаем pptpd на UBUNTU- теперь это актуально. И чуть про ufw.

Оглавление

Сначала о хорошем.

Наконец-то в 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/