LINUX.ORG.RU
ФорумAdmin

Проблема с созданием VPN

 


0

1

Продолжается моё знакомство с сетями в Linux.

В этот раз я пытаюсь поднять PPTP VPN-сервер (PPTP - потому что и в офтопике, и на Android будет работать из коробки в отличии от OpenVPN).

Выполнил настройку точь-в-точь по этой статье: https://wiki.archlinux.org/index.php/PPTP_Server

Не работает.

Пытался подключаться из офтопика (доходит до «проверка имени пользователя и пароля» и виснет, а потом переподключается), онтопика и Android. Каждый раз как из-вне, так и из локальной сети.

В логах сервера вот что:

Aug 24 03:00:59 localhost pptpd[24905]: CTRL: Client XXX.XXX.XXX.XXX control connection started
Aug 24 03:01:00 localhost pptpd[24905]: CTRL: Starting call (launching pppd, opening GRE)
Aug 24 03:01:00 localhost pppd[24906]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded.
Aug 24 03:01:00 localhost pppd[24906]: pppd 2.4.5 started by root, uid 0
Aug 24 03:01:00 localhost pppd[24906]: Using interface ppp0
Aug 24 03:01:00 localhost pppd[24906]: Connect: ppp0 <--> /dev/pts/0
Aug 24 03:01:30 localhost pppd[24906]: LCP: timeout sending Config-Requests
Aug 24 03:01:30 localhost pppd[24906]: Connection terminated.
Aug 24 03:01:30 localhost pppd[24906]: Modem hangup
Aug 24 03:01:30 localhost pppd[24906]: Exit.
Aug 24 03:01:30 localhost pptpd[24905]: CTRL: Client XXX.XXX.XXX.XXX control connection finished
★★★★★
Ответ на: комментарий от pekmop1024

Оно есть хотя бы в седьмом офтопике из коробки?

Хотя похоже в любом случае придётся пробовать его, потому что никак заставить работать pptp не получается...

KivApple ★★★★★
() автор топика

модуль ppp_mppe загружен ?

ovax ★★★
()

Из лога мало что понятно.
Конфиг выложи.

dada ★★★★★
()
Ответ на: комментарий от Flammpanzer

Ура! Работает.

А нельзя как-нибудь заставить его создавать интерфейсы, начиная с ppp1? Чтобы VPN-клиенту/DSL-клиенту/USB-модему всегда доставался ppp0?

KivApple ★★★★★
() автор топика
Ответ на: комментарий от pekmop1024

Настроил... работает... и почему-то раздаёт интернет, не смотря на правила iptables. Как с этим бороться? В мои планы входило только создание локальной сети.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от pekmop1024
$ cat /etc/xl2tpd/xl2tpd.conf
[global]
access control = no
auth file = /etc/ppp/chap-secrets
debug avp = no
debug network = no
debug packet = no
debug state = no
debug tunnel = no

[lns default]
require chap = yes
ppp debug = no
pppoptfile = /etc/ppp/options.l2tpd
require pap = no
assign ip = yes
hostname = kiv-notebook
ip range = 172.16.0.2-172.16.0.254
local ip = 172.16.0.1
challenge = no
;lac = <lacs>
require authentication = no

$ cat /etc/ppp/options.l2tpd 
login
lcp-echo-interval 10
lcp-echo-failure 2
noipx

refuse-pap
refuse-chap
refuse-mschap

require-mppe
require-mschap-v2

nodefaultroute
proxyarp

#bsdcomp
#deflate
#accomp
#noccp
#nopcomp
#nopredictor1
#novj
#novjccomp
#debug 7

$ cat /etc/firewall.sh 
#!/bin/sh

ipt() {
	iptables $@
	ip6tables $@
}

# Правила по умолчанию
ipt -F
ipt -X
ipt -P INPUT DROP
ipt -P OUTPUT ACCEPT
ipt -P FORWARD DROP

# Разрешаем любую передачу данных по локальному сетевому интерфейсу
ipt -A INPUT -i lo -j ACCEPT
ipt -A OUTPUT -o lo -j ACCEPT

# Разрешаем уже установленные соединения
ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ipt -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем ICMP с информацией о соединениях
iptables -A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT

# Разрешаем приём ответов на пинги
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT

# Ограничиваем входящие пинги
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT

# Разрешаем DHCP
ipt -A INPUT -p udp -m udp --dport 68 --sport 67 -j ACCEPT

# Разрешение некоторых входящих соединений
ipt -A INPUT -p tcp --dport 22 -j ACCEPT
ipt -A INPUT -p tcp --dport 80 -j ACCEPT
ipt -A INPUT -p udp --dport 1701 -j ACCEPT
iptables -A INPUT -p 41 -j ACCEPT

Раздача пропала только после убирания в sysctl.conf net.ipv4.ip_forward = 1, но мне такой вариант не нравится - хочу рулить раздачей с помощью фаервола.

KivApple ★★★★★
() автор топика

нормально openvpn работает на android, юзай приложния из google play

vinnni
()
Ответ на: комментарий от mky

Это для IPv6 тунеля.

Вроде бы разобрался... Надо чистить правила NAT с помощью iptables -t nat -F; iptables -t nat -X, а не только iptables -t nat -F.

Только вот ещё такая проблема: как объяснить клиентам, что не надо пытаться ходить в интернет через мой VPN? Только к адресам из подсети 172.16.0.0. А то на машинах пропадает интернет при подключении к VPN.

KivApple ★★★★★
() автор топика
Ответ на: комментарий от mky

Хм... нет. Вообще не понятно при каких условиях оно работает. Сейчас правила iptables nat почистил, а интернет на клиенте всё равно идёт через VPN:

# Generated by iptables-save v1.4.15 on Sat Aug 25 18:32:01 2012
*nat
:PREROUTING ACCEPT [132:16009]
:INPUT ACCEPT [6:344]
:OUTPUT ACCEPT [236:16520]
:POSTROUTING ACCEPT [254:17452]
COMMIT
# Completed on Sat Aug 25 18:32:01 2012
# Generated by iptables-save v1.4.15 on Sat Aug 25 18:32:01 2012
*filter
:INPUT DROP [82:7770]
:FORWARD ACCEPT [45:2280]
:OUTPUT ACCEPT [1950:592092]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 5/sec -j ACCEPT
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j ACCEPT
-A INPUT -p udp -m udp --dport 30000 -j ACCEPT
-A INPUT -p ipv6 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT
# Completed on Sat Aug 25 18:32:01 2012
KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

У вас политика в FORWARD не DROP, как в предыдущем посте (ipt -P FORWARD DROP), а ACCEPT, поэтмоу всё и ходит. Без записей в nat таблице клиенты всё одно будут выходить в инет, только без NAT их приватных ip-адресов, им не придут ответные пакеты. Поэтмоу по правильному писать нужные правила в FORWARD.

Пишите там пару правил, одно разрешающае трафик с ip-адресов клиентов на 172.16.0.0, другое --- со 172.16.0.0 на адреса клиентов. А политику в FORWARD поставьте в DROP.

как объяснить клиентам, что не надо пытаться ходить в интернет через мой VPN

Да особо ни как. Штатных средств по объявлению маршрутов у ppp, в отличии от OpenVPN нету. Так нужно убрать в настройках VPN-соединения галочку, про использования данного шлюза по умолчанию, и прописать руками маршрут (через «route add ...») для сети 172.16.0.0 через ppp-соединение. Вроде была опция "-p", запоминающая маршрут после перезагрузки, но как она будет рабоать для VPN-интерфейса я не знаю.

mky ★★★★★
()
Ответ на: комментарий от mky

Так правильно?

$ cat /etc/firewall.sh 
#!/bin/sh

ipt() {
	iptables $@
	ip6tables $@
}

# Правила по умолчанию
ipt -F
ipt -X
ipt -P INPUT DROP
ipt -P OUTPUT ACCEPT
ipt -P FORWARD DROP
iptables -t nat -F
iptables -t nat -X

# Разрешаем любую передачу данных по локальному сетевому интерфейсу
ipt -A INPUT -i lo -j ACCEPT
ipt -A OUTPUT -o lo -j ACCEPT

# Разрешаем уже установленные соединения
ipt -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ipt -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Разрешаем ICMP с информацией о соединениях
iptables -A INPUT -p icmp -m icmp --icmp-type source-quench -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type parameter-problem -j ACCEPT

# Разрешаем приём ответов на пинги
iptables -A INPUT -p icmp -m icmp --icmp-type echo-reply -j ACCEPT

# Ограничиваем входящие пинги
iptables -A INPUT -p icmp -m icmp --icmp-type echo-request -m limit --limit 5/s -j ACCEPT

# Разрешаем DHCP
ipt -A INPUT -p udp -m udp --dport 68 --sport 67 -j ACCEPT

# Разрешение некоторых входящих соединений
ipt -A INPUT -p tcp --dport 22 -j ACCEPT
ipt -A INPUT -p tcp --dport 80 -j ACCEPT
ipt -A INPUT -p udp --dport 1701 -j ACCEPT
ipt -A INPUT -p udp --dport 30000 -j ACCEPT
iptables -A INPUT -p ipv6 -j ACCEPT

# Настройка NAT для VPN
#iptables -t nat -A POSTROUTING -s 172.16.0.1/16 -j MASQUERADE

# Разрешаем обмен данными внутри VPN
iptables -A FORWARD -s 172.16.0.1/16 -d 172.16.0.1/16 -j ACCEPT
$ sudo iptables-save
Пароль: 
# Generated by iptables-save v1.4.15 on Sun Aug 26 20:10:15 2012
*nat
:PREROUTING ACCEPT [5438:888652]
:INPUT ACCEPT [22:12089]
:OUTPUT ACCEPT [8711:627799]
:POSTROUTING ACCEPT [8711:627799]
COMMIT
# Completed on Sun Aug 26 20:10:15 2012
# Generated by iptables-save v1.4.15 on Sun Aug 26 20:10:15 2012
*filter
:INPUT DROP [1018:109974]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [43043:3846128]
:fail2ban-SSH - [0:0]
-A INPUT -p tcp -m tcp --dport 22 -j fail2ban-SSH
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 12 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 0 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 5/sec -j ACCEPT
-A INPUT -p udp -m udp --sport 67 --dport 68 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p udp -m udp --dport 1701 -j ACCEPT
-A INPUT -p udp -m udp --dport 30000 -j ACCEPT
-A INPUT -p ipv6 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -s 172.16.0.0/16 -d 172.16.0.0/16 -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A fail2ban-SSH -j RETURN
COMMIT
# Completed on Sun Aug 26 20:10:16 2012
KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Запись:

iptables -A FORWARD -s 172.16.0.1/16 -d 172.16.0.1/16 -j ACCEPT

не совсем корректна, 172.16.0.1 с суффиксом /16 не имеет смысла, нужно 172.16.0.0/16. А может нужно 172.16.0.0/24, так как VPN-клиентам вы даёте адреса из диапазона 172.16.0.2-172.16.0.254.

mky ★★★★★
()

В этот раз я пытаюсь поднять PPTP VPN-сервер

Даже и не пытайся! Закопай и забудь. Он умер.

funky
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.