LinuxForum.Fans
Тема

PPTP VPN Server для доступа в локалку из Интернета

Автор: vladus 13 сообщений 6599 просмотров
#224594

Добрый день.
Прошу "ткнуть носом"…
Ситуация относительно проста, но 2 недели "гугления" и "курение мануалов" пока не помогли разобраться…

Есть сервер:

Показать
Сервер: Ubuntu Server Linux 10.04.3
Ядро и процессор Linux: 2.6.32-38-generic-pae на i686

Схема подключения "интернет↔локалка":

Показать
(((ИНТЕРНЕТ)))
↨
Провайдер "Билайн"
↨соединение по L2TP(VPN)
Роутер LinkSys WRT54GL (с заводской прошивкой, не перепрошивал)
↨ eth0-интерфейс сервера
СЕРВЕР с 2-мя сетевыми картами (Ubuntu Server 10.04)
↨ eth1-интерфейс сервера
8-портовый хаб
↨↨↨
несколько домашних компов

Вывод команды ifconfig (конечно же на сервере):

Показать
eth0 Link encap:Ethernet HWaddr 1c:bd:b9:d8:05:c3
inet addr:192.168.1.102 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::1ebd:b9ff:fed8:5c3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1032675 errors:0 dropped:0 overruns:0 frame:0
TX packets:794100 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:866474633 (866.4 MB) TX bytes:87085071 (87.0 MB)
Interrupt:21

eth1 Link encap:Ethernet HWaddr f0:7d:68:b8:89:2a
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::f27d:68ff:feb8:892a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3142656 errors:0 dropped:0 overruns:0 frame:0
TX packets:3430548 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:343223823 (343.2 MB) TX bytes:1652722719 (1.6 GB)
Interrupt:22 Base address:0xa000

lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:1983 errors:0 dropped:0 overruns:0 frame:0
TX packets:1983 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:459184 (459.1 KB) TX bytes:459184 (459.1 KB)

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.7.0.1 P-t-P:10.7.0.2 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

virbr0 Link encap:Ethernet HWaddr a6:2c:b3:44:78:02
inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0
inet6 addr: fe80::a42c:b3ff:fe44:7802/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:16055 (16.0 KB)

Пока тестирую работу PPTP-сервера через комп, подключенный к тому же роутеру, к которому подключен и сам сервер.
То есть, этот комп (PPTP-клиент) за пределами локалки, которую организовал сервер, но в одной локалке с внешним сетевым интерфейсом сервера:

Показать
Роутер
/ \
сервер комп(PPTP-клиент - вне домашней сети - видит eth0, и естественно не видит eth1 и компы домашней сети)
|
хаб
/ | \
домашняя сеть

Раздел "filter" Файла iptables.up.rules:

Показать
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

PPTP-соединение устанавливается, "внешний комп" может видеть компы домашней сети и их ресурсы…
Но если сделать вот так (цепочки "отбрасывают", а правила "принимают", чтобы соблюсти требования к безопасности):

Показать
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state -i eth0 --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p tcp -m tcp --sport 1723 -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -m state -i eth0 -o eth1 --state RELATED,ESTABLISHED -j ACCEPT
COMMIT

… то соединение устанавливается, а вот уже ни компов, ни их ресурсов не достать.

Понимаю, что проблема с правилами, но в чём ошибся (что лишнее и чего не хватает), разобраться не удаётся.
Буду признателен за помощь.

P.S. И, быть может, основополагающий вопрос:
Сможет ли PPTP работать "внутри" билайновского L2TP?
Есть ли смысл поднимать L2TP-VPN-сервер вместо PPTP-VPN-сервера, чтобы не получилось "конфликтов" между PPTP и L2TP?

#224600

Всё может.

[console]-A FORWARD -s 192.168.0.xxxx -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 192.168.0.xxxx -j ACCEPT[/console]

#224601

Самое первое что нуно это разрешыть форвардинг пакетов между интерфейсами

text
echo 1 > /proc/sys/net/ipv4/ip_forward

А далее разбиратса с маршрутами ну и для безопасности настроить фаервол

#224621
Kettler написал:
Всё может.

Это применительно к "PPTP внутри L2TP"?

Kettler написал:
[console]-A FORWARD -s 192.168.0.xxxx -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 192.168.0.xxxx -j ACCEPT[/console]

а с INPUT всё как должно быть? верно? (предположил, учитывая что первичное, входящее, соединение устанавливается, а дальше всё стопорится)

Добавил в "iptables.up.rules" данные правила.

Видимо где-то закралась ошибка(?), если результат команды "/etc/init.d/networking restart" вот такой:

Показать
root@cbserver:/etc#
* Reconfiguring network interfaces... There is already a pid file /var/run/dhclient.eth0.pid with pid 6333
killed old client process, removed PID file
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/1c:bd:b9:d8:05:c3
Sending on LPF/eth0/1c:bd:b9:d8:05:c3
Sending on Socket/fallback
DHCPRELEASE on eth0 to 192.168.1.1 port 67
Internet Systems Consortium DHCP Client V3.1.3
Copyright 2004-2009 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/1c:bd:b9:d8:05:c3
Sending on LPF/eth0/1c:bd:b9:d8:05:c3
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 7
DHCPOFFER of 192.168.1.102 from 192.168.1.1
DHCPREQUEST of 192.168.1.102 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.1.102 from 192.168.1.1
bound to 192.168.1.102 -- renewal in 35140 seconds.
iptables-restore v1.4.4: host/network `192.168.0.xxxx' not found
Error occurred at line: 35
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
Failed to bring up eth0.
iptables-restore v1.4.4: host/network `192.168.0.xxxx' not found
Error occurred at line: 35
Try `iptables-restore -h' or 'iptables-restore --help' for more information.
Failed to bring up eth1.

[ OK ]

выражение `192.168.0.xxxx' надо как-то по-другому написать?

Kettler написал:
Самое первое что нуно это разрешыть форвардинг пакетов между интерфейсами

Это и было самым первым сделано, если не изменяет память.

#224624

Это чисто пример))))
192.168.0.xxxx/24 это диапазон ип клиентам VPN.

[console]-A FORWARD -s 192.168.0.xxxx/24 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 192.168.0.xxxx/24 -j ACCEPT
-A FORWARD -s 192.168.0.xxxx/24 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.0.xxxx/24 -j ACCEPT
[/console]

INPUT верно. 1723 используется для PPTP сервера.

#224638
Kettler написал:
Это чисто пример))))
192.168.0.xxxx/24 это диапазон ип клиентам VPN.

[console]-A FORWARD -s 192.168.0.xxxx/24 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 192.168.0.xxxx/24 -j ACCEPT
-A FORWARD -s 192.168.0.xxxx/24 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.0.xxxx/24 -j ACCEPT
[/console]

)) да, понял, что это диапазон..
а как этот диапазон указать в iptables?
или надо под каждый IP, выдаваемый PPTP-клиенту, отдельную строчку правила?
Кстати, а /24 обязательно добавлять? Просто в первом примере этого не было..

Kettler написал:
INPUT верно. 1723 используется для PPTP сервера.

спасибо ) хорошо, что я хоть INPUT корректно прописал ))..

#224648
newzenon написал:

это, пожалуй, близко к искомому (попробую "покурить" вашу ссылку)..
искал в гугле и на форуме по "pptp ubuntu", а по этой фразе в основном pptp-клиент описывается..

если Вы про вот это:

text
Поэтому в основу любого firewall должны быть заложены правила по закрытию и контролированию портов.
В нашем случае действуют политики по умолчанию - всё закрыть, открыть извне только то что нам необходимо, а также сам шлюз и компьютеры локальной сети могут открывать порты в обратную сторону самостоятельно, вот как эти правила выглядят на языке iptables:

# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено): iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. # Пропускать все уже инициированные соединения, а также дочерние от них iptables -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT # Пропускать новые, а так же уже инициированные и их дочерние соединения iptables -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT # Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений iptables -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Исходные данные. Компьютер подключенный к интернет через pppoe (для настройки лучше использовать pppoeconf - это скрипт входящий в стандартную установку Debian), интерфейс ppp0.

..то это же вроде для раздачи компьютерам локальной сети доступа "В ИНТЕРНЕТ".. а мне нужно сделать правила для доступа в локальную сеть "ИЗ ИНТЕРНЕТА" через PPTP-сервер..
Или это правила универсальные для PPTP-соединений?

#224652

Покажи конфиг PPTPD и подправлю правила под тебя)
24 просто в первом сообщении забыл)

#224656
Kettler написал:
Покажи конфиг PPTPD и подправлю правила под тебя)

pptpd.conf:

text
option /etc/ppp/pptpd-options

logwtmp

# IP-адрес сервера в локальной сети localip 192.168.0.1 # Диапазон адресов для клиентов PPTP-сервера remoteip 192.168.0.234-238,192.168.0.245

но внутренние IP-адреса выдаются в chap-secrets:

text
user01   pptpd   Pass99%!   "192.168.0.201"
user02   pptpd   Pass99%!   "192.168.0.202"
user03   pptpd   Pass99%!   "192.168.0.203"

Кстати, корректно ли это?
Или ip-адреса в chap-secrets должны совпадать с диапазоном в pptpd.conf ?

#224663

Тогда как то так

[console]-A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -d 192.168.0.0/24 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth1 -j ACCEPT
-A FORWARD -i eth1 -d 192.168.0.0/24 -j ACCEPT[/console]

#224664
vladus написал:

Или ip-адреса в chap-secrets должны совпадать с диапазоном в pptpd.conf ?

Не обязательно

#224684

тем не менее..

Так ресурсы локальной сети доступны:

Показать
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*mangle
:PREROUTING ACCEPT [22937:12425189]
:INPUT ACCEPT [15975:11329360]
:FORWARD ACCEPT [6851:1088316]
:OUTPUT ACCEPT [17053:11382782]
:POSTROUTING ACCEPT [24057:12492604]
COMMIT
# Completed on Thu Jan 26 13:27:05 2012
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*nat
:PREROUTING ACCEPT [2023:278391]
:POSTROUTING ACCEPT [11:1436]
:OUTPUT ACCEPT [772:52768]
-A PREROUTING -i eth1 -p tcp -m tcp -m multiport --dports 80,8080 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Jan 26 13:27:05 2012
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state -i eth0 --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 1723 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --sport 1723 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -m state -i eth0 -o eth1 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p gre -j ACCEPT
-A FORWARD -p tcp -m tcp -i eth0 --dport 1723 -j ACCEPT
-A FORWARD -p tcp -m tcp -i eth0 --sport 1723 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth1 -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i eth1 -j ACCEPT
COMMIT
# Completed on Thu Jan 26 13:27:05 2012

а вот так не доступны:

Показать
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*mangle
:PREROUTING ACCEPT [22937:12425189]
:INPUT ACCEPT [15975:11329360]
:FORWARD ACCEPT [6851:1088316]
:OUTPUT ACCEPT [17053:11382782]
:POSTROUTING ACCEPT [24057:12492604]
COMMIT
# Completed on Thu Jan 26 13:27:05 2012
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*nat
:PREROUTING ACCEPT [2023:278391]
:POSTROUTING ACCEPT [11:1436]
:OUTPUT ACCEPT [772:52768]
-A PREROUTING -i eth1 -p tcp -m tcp -m multiport --dports 80,8080 -j ACCEPT
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Thu Jan 26 13:27:05 2012
# Generated by iptables-save v1.4.4 on Thu Jan 26 13:27:05 2012
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]

:OUTPUT ACCEPT [0:0]
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state -i eth0 --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --dport 1723 -j ACCEPT
-A INPUT -p tcp -m tcp -i eth0 --sport 1723 -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -m state -i eth0 -o eth1 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p gre -j ACCEPT
-A FORWARD -p tcp -m tcp -i eth0 --dport 1723 -j ACCEPT
-A FORWARD -p tcp -m tcp -i eth0 --sport 1723 -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT
-A FORWARD -s 192.168.0.0/24 -o eth1 -j ACCEPT
-A FORWARD -d 192.168.0.0/24 -i eth1 -j ACCEPT
COMMIT
# Completed on Thu Jan 26 13:27:05 2012

..значит правила не срабатыают?

может сам синтаксис правил не совсем корректен?

Войдите или зарегистрируйтесь, чтобы ответить.