Существуют задачи, когда нужно получить доступ к оборудованию, находящемуся в локальной сети с доступом в интернет, но при этом не имея внешнего ip адреса. При этом локальных сетей и устройств может быть несколько. Для этого существует несколько различных служб. В данном примере мы рассмотрим установку PPTP службы на VDS сервере с Debian 12.
Нашей целью является настроить серверную часть службы, к которой мы сможем подключить устройства из локальной сети и тем самым получить к ним удаленный доступ, так как VDS сервер имеет выделенный ip.
Для примера: Вы разместили у себя в офисе или на даче сервер, который подключается через мобильный интернет. Зачастую мобильные операторы не предоставляют постоянный, выделенный ip физическим лицам. Чтобы иметь возможность подлючаться к нему через интернет мы настроим на VDS Debian 12 серверную часть PPTP службы, а Ваш домашний сервер как клиентскую часть, где он будет подключатся к серверу.
1. Установка служб
apt install ppp pptpd
1.1 Настройка службы PPTP /etc/pptpd.conf
Определимся с локальной сетью и приведем конфигурацию к виду
localip 10.10.10.1
remoteip 10.10.10.2-254
Если Вы заказали сервер с несколькими внешними ip адресами, Вы можете добавить строку, где будет явно указано, на каком ip будет работать наша служба.
listen внешний_интернет_ip
1.2 Добавим опции в конец файла /etc/ppp/pptpd-options
mtu 1400
mru 1400
auth
require-mppe
При необходимости отредактируйте параметры
ms-dns 8.8.8.8
ms-dns 8.8.4.4
1.3 Раскомментируем опцию /etc/sysctl.conf
net.ipv4.ip_forward=1
Применим настройки:
sysctl -p
1.4 Настроим фаервол, в нашем случае iptables
apt install iptables
1.4.1 Добавим правила, где eth0 - имя внешнего интерфейса
iptables -A INPUT -p gre -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
1.4.2 Включение локальной сети между подключенными клиентами, где eth0 - имя внешнего интерфейса
iptables --table nat --append POSTROUTING --out-interface ppp0 -j MASQUERADE
iptables -I INPUT -s 10.10.10.0/24 -i ppp0 -j ACCEPT
iptables --append FORWARD --in-interface eth0 -j ACCEPT
1.4.3 Отключение доступа к интернету через VDS сервер
При необходимости, когда целью является объединение локальных сетей и доступ к локальному оборудованию, чтобы устройства продолжали использовать свой интернет добавьте правило, где eth0 - интерфейс с внешним ip.
iptables -I FORWARD -s 10.10.10.0/24 -o eth0 -j DROP
Обратите внимание на клиентской части нужно будет снять галочку с опции Использовать основной шлюз в удаленной сети. Мы объединим локальные сети, но при этом доступ в интернет будет через локального провайдера, а не через VDS сервер.
1.4.4 Сохраним правила
iptables-save > /etc/iptables.conf
1.4.5 Добавим правила в автозагрузку, добавьте строку в конец файла /etc/network/interfaces
pre-up /sbin/iptables-restore < /etc/iptables.conf
1.5 Добавим пользователей в файл /etc/ppp/chap-secrets
В данном примере пользователю user1 назначается любой свободный ip адрес, в то время как пользователь user2 всегда будет получать статический ip.
user1 pptpd password1 "*"
user2 pptpd password2 "10.10.10.10"
1.6 Добавим в автозагрузку и применим настройки
systemctl enable pptpd
service pptpd restart
2. Просмотр активных подключений
Увидеть все активные подключения и их ip адреса можно с помощью команд.
2.1 Используя ifconfig
ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1396
inet 10.10.10.1 netmask 255.255.255.255 destination 10.10.10.2
ppp txqueuelen 3 (Point-to-Point Protocol)
RX packets 323 bytes 49503 (48.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 626 (626.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ppp1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1396
inet 10.10.10.1 netmask 255.255.255.255 destination 10.10.10.10
ppp txqueuelen 3 (Point-to-Point Protocol)
RX packets 24 bytes 896 (896.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 24 bytes 890 (890.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.2 Используя route
10.10.10.2 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.10.10.10 0.0.0.0 255.255.255.255 UH 0 0 0 ppp1
2.3 Используя service pptpd status
pptpd.service - PoPToP Point to Point Tunneling Server
Loaded: loaded (/lib/systemd/system/pptpd.service; enabled; preset: enabled)
Active: active (running) since Thu 2024-03-07 13:42:51 MSK; 4h 5min ago
Docs: man:pptpd(8)
man:pptpctrl(8)
man:pptpd.conf(5)
Main PID: 480 (pptpd)
Tasks: 5 (limit: 1099)
Memory: 4.3M
CPU: 9.462s
CGroup: /system.slice/pptpd.service
├─480 /usr/sbin/pptpd --fg
├─605 "pptpd [123.123.123.123:97EE - 0400]"
├─606 /usr/sbin/pppd local file /etc/ppp/pptpd-options 115200 10.10.10.1:10.10.10.3 ipparam 123.123.123.123 plugin /usr/lib/pptpd/pptpd-logwtmp.so pptpd-original-ip 123.123.123.123>
├─986 "pptpd [123.123.123.123:D114 - 0580]"
└─987 /usr/sbin/pppd local file /etc/ppp/pptpd-options 115200 10.10.10.1:10.10.10.2 ipparam 123.123.123.123 plugin /usr/lib/pptpd/pptpd-logwtmp.so pptpd-original-ip 123.123.123.123>
Сервер настроен и готов к подключениям.
Смотрите также:
- Настройка PPTP клиента для получения удаленного доступа к рабочей станции Debian 12
- Настройка PPTP клиента для получения удаленного доступа к рабочей станции Windows 10