Назад | Перейти на главную страницу

Сервер Debian + PPTP VPN - соединение не работает

Я установил Seagate DockStar с Debian Squeeze в качестве небольшого сервера в моей домашней сети. Я хочу получить к нему доступ из-за пределов моей сети, поэтому мне нужно VPN-соединение. Кстати, у меня нет маршрутизатора со встроенным VPN-сервером. У меня уже есть "большой" сервер Windows XP, к которому я могу получить доступ через туннель PPTP VPN. Это было довольно просто, но теперь с Debian у меня возникли проблемы с настройкой VPN-соединения.

Я установил pptpd через

apt-get install pptpd 

уже. Это мой pptpd.conf:

# TAG: ppp
#    Path to the pppd program, default '/usr/sbin/pppd' on Linux
#
#ppp /usr/sbin/pppd

# TAG: option
#    Specifies the location of the PPP options file.
#    By default PPP looks in '/etc/ppp/options'
#
option /etc/ppp/pptpd-options

# TAG: debug
#    Turns on (more) debugging to syslog
#
#debug

# TAG: stimeout
#    Specifies timeout (in seconds) on starting ctrl connection
#
# stimeout 10

# TAG: noipparam
#       Suppress the passing of the client's IP address to PPP, which is
#       done by default otherwise.
#
#noipparam

# TAG: logwtmp
#    Use wtmp(5) to record client connections and disconnections.
#
logwtmp

# TAG: bcrelay <if>
#    Turns on broadcast relay to clients from interface <if>
#
#bcrelay eth1

# TAG: localip
# TAG: remoteip
#    Specifies the local and remote IP address ranges.
#
#       Any addresses work as long as the local machine takes care of the
#       routing.  But if you want to use MS-Windows networking, you should
#       use IP addresses out of the LAN address space and use the proxyarp
#       option in the pppd options file, or run bcrelay.
#
#    You can specify single IP addresses seperated by commas or you can
#    specify ranges, or both. For example:
#
#        192.168.0.234,192.168.0.245-249,192.168.0.254
#
#    IMPORTANT RESTRICTIONS:
#
#    1. No spaces are permitted between commas or within addresses.
#
#    2. If you give more IP addresses than MAX_CONNECTIONS, it will
#       start at the beginning of the list and go until it gets 
#       MAX_CONNECTIONS IPs. Others will be ignored.
#
#    3. No shortcuts in ranges! ie. 234-8 does not mean 234 to 238,
#       you must type 234-238 if you mean this.
#
#    4. If you give a single localIP, that's ok - all local IPs will
#       be set to the given one. You MUST still give at least one remote
#       IP for each simultaneous client.
#
# (Recommended)
localip 192.168.0.120
remoteip 192.168.0.121-129
# or
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245

Мой DHCP-сервер в маршрутизаторе распределяет IP-адреса, начинающиеся с 192.168.0.2. Мой большой сервер распределял IP-адреса, начиная с 192.168.0.121, для клиентов VPN (сам сервер имел xxx120 TP) - как я уже писал, на большом сервере VPN работает, поэтому я просто установил localip и диапазон удаленного IP для тех из большой сервер.

Мои параметры pptpd выглядят так:

# Authentication

# Name of the local system for authentication purposes 
# (must match the second field in /etc/ppp/chap-secrets entries)
name pptpd

# Optional: domain name to use for authentication
# domain mydomain.net

# Strip the domain prefix from the username before authentication.
# (applies if you use pppd with chapms-strip-domain patch)
#chapms-strip-domain


# Encryption
# Debian: on systems with a kernel built with the package
# kernel-patch-mppe >= 2.4.2 and using ppp >= 2.4.2, ...
# {{{
refuse-pap
refuse-chap
refuse-mschap
# Require the peer to authenticate itself using MS-CHAPv2 [Microsoft
# Challenge Handshake Authentication Protocol, Version 2] authentication.
require-mschap-v2
# Require MPPE 128-bit encryption
# (note that MPPE requires the use of MSCHAP-V2 during authentication)
#require-mppe-128
# }}}




# Network and Routing

# If pppd is acting as a server for Microsoft Windows clients, this
# option allows pppd to supply one or two DNS (Domain Name Server)
# addresses to the clients.  The first instance of this option
# specifies the primary DNS address; the second instance (if given)
# specifies the secondary DNS address.
# Attention! This information may not be taken into account by a Windows
# client. See KB311218 in Microsoft's knowledge base for more information.
#ms-dns 10.0.0.1
#ms-dns 10.0.0.2

# If pppd is acting as a server for Microsoft Windows or "Samba"
# clients, this option allows pppd to supply one or two WINS (Windows
# Internet Name Services) server addresses to the clients.  The first
# instance of this option specifies the primary WINS address; the
# second instance (if given) specifies the secondary WINS address.
#ms-wins 10.0.0.3
#ms-wins 10.0.0.4

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.  This will have the effect of making the peer appear to other
# systems to be on the local ethernet.
# (you do not need this if your PPTP server is responsible for routing
# packets to the clients -- James Cameron)
proxyarp

# Debian: do not replace the default route
nodefaultroute


# Logging

# Enable connection debugging facilities.
# (see your syslog configuration for where pppd sends to)
#debug

# Print out all the option values which have been set.
# (often requested by mailing list to verify options)
#dump


# Miscellaneous

# Create a UUCP-style lock file for the pseudo-tty to ensure exclusive
# access.
lock

# Disable BSD-Compress compression
nobsdcomp 

ms-dns 192.168.0.1
netmask 255.255.255.0
noipx
mtu 1490
mru 1490

В файле chap-secrets я зарегистрировал одного пользователя. (например, следующее: - это правильно?)

netstat сообщает мне, что порт 1723 открыт и прослушивается pptpd, также как и сканирование портов nmap с другого компьютера. iptables не установлен на DockStar. В моем маршрутизаторе я перенаправляю каждое TCP или UDP-соединение на порт 1723 на IP-адрес DockStar.

Я пробовал подключиться к Windows XP, Windows 7 и Mac OS X. Не все могут установить соединение. Mac OS X показывает только общее сообщение об ошибке, клиенты Windows показывают «Ошибка 619 - не удалось установить соединение с удаленным компьютером». Клиенты настроены на использование MSCHAPv2 с именем пользователя и паролем, заданными в файле chap-secrets.

Не имеет значения, пытаюсь ли я подключиться к серверу со своего ноутбука в той же сети или через мое соединение WWAN (когда WiFi отключен) - это не срабатывает каждый раз, когда я пытаюсь подключиться.

Кто-нибудь знает, что не так с конфигурацией сервера, и знает, как я могу заставить его работать?

Заранее спасибо,

iYassin

Что ж, у меня действительно не было установленной службы ведения журнала в моей установке Debian. Теперь я установил rsyslog, поэтому вот журнал, записываемый в / var / log / syslog, когда я пытаюсь подключиться к VPN-серверу через PPTP на моем компьютере с Windows 7:

Oct 17 20:05:57 debian pptpd[769]: MGR: Launching /usr/sbin/pptpctrl to handle client
Oct 17 20:05:57 debian pptpd[769]: CTRL: local address = 192.168.1.1
Oct 17 20:05:57 debian pptpd[769]: CTRL: remote address = 192.168.2.1
Oct 17 20:05:57 debian pptpd[769]: CTRL: pppd options file = /etc/ppp/pptpd-options
Oct 17 20:05:57 debian pptpd[769]: CTRL: Client 192.168.0.7 control connection started
Oct 17 20:05:57 debian pptpd[769]: CTRL: Received PPTP Control Message (type: 1)
Oct 17 20:05:57 debian pptpd[769]: CTRL: Made a START CTRL CONN RPLY packet
Oct 17 20:05:57 debian pptpd[769]: CTRL: I wrote 156 bytes to the client.
Oct 17 20:05:57 debian pptpd[769]: CTRL: Sent packet to client
Oct 17 20:05:57 debian pptpd[769]: CTRL: Received PPTP Control Message (type: 7)
Oct 17 20:05:57 debian pptpd[769]: CTRL: Set parameters to 100000000 maxbps, 64 window size
Oct 17 20:05:57 debian pptpd[769]: CTRL: Made a OUT CALL RPLY packet
Oct 17 20:05:57 debian pptpd[769]: CTRL: Starting call (launching pppd, opening GRE)
Oct 17 20:05:57 debian pptpd[769]: CTRL: pty_fd = 6
Oct 17 20:05:57 debian pptpd[769]: CTRL: tty_fd = 7
Oct 17 20:05:57 debian pptpd[769]: CTRL: I wrote 32 bytes to the client.
Oct 17 20:05:57 debian pptpd[769]: CTRL: Sent packet to client
Oct 17 20:05:57 debian pptpd[771]: CTRL (PPPD Launcher): program binary = /usr/sbin/pppd
Oct 17 20:05:57 debian pptpd[771]: CTRL (PPPD Launcher): local address = 192.168.1.1
Oct 17 20:05:57 debian pptpd[771]: CTRL (PPPD Launcher): remote address = 192.168.2.1
Oct 17 20:05:57 debian pptpd[769]: CTRL: Received PPTP Control Message (type: 15)
Oct 17 20:05:57 debian pptpd[769]: CTRL: Got a SET LINK INFO packet with standard ACCMs
Oct 17 20:05:57 debian pppd[771]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.4, this is 2.4.5
Oct 17 20:05:57 debian pptpd[769]: GRE: read(fd=6,buffer=1fb40,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Oct 17 20:05:57 debian pptpd[769]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Oct 17 20:05:57 debian pptpd[769]: CTRL: Reaping child PPP[771]
Oct 17 20:05:57 debian pptpd[769]: CTRL: Client 192.168.0.7 control connection finished
Oct 17 20:05:57 debian pptpd[769]: CTRL: Exiting now
Oct 17 20:05:57 debian pptpd[507]: MGR: Reaped child 769

Кажется, что-то не так с GRE ... но, как я уже сказал, PPTP-соединение с моим сервером Windows работает (если я установил переадресацию портов в моем маршрутизаторе обратно на сервер Windows). Используют ли серверы Windows GRE для соединений PPTP VPN? Если они это сделают, я думаю, что могу предположить, что мой маршрутизатор поддерживает GRE. Может быть, мне придется настроить поддержку GRE в системе Debian?

Мне не совсем понятно, как вы заставили PPTP работать с сервером Windows XP, когда вы перенаправили весь трафик порта 1723 на сервер Debian Squeeze. Скорее всего, вы можете подключиться к серверу WinXP только через «VPN» из своей локальной сети, что, кажется, имеет ограниченную полезность.

Тем не менее, PPTP требует не только трафика TCP-порта 1723, но и протокола GRE. Может ли ваш маршрутизатор правильно обрабатывать туннели GRE? Если это обычный роутер потребительского уровня, то подозреваю, что нет. И даже если это так, GRE достаточно эзотеричен, поэтому найти помощь может быть сложно.

В вашем случае я рекомендую попробовать решение VPN, которое использует только транспорт TCP и / или UDP, поскольку эти протоколы широко распространены и хорошо известны. OpenVPN - одно из таких решений VPN, доступное для всех основных операционных систем (Win, Mac, Linux, * BSD).

В зависимости от того, что вы пытаетесь выполнить, есть еще одна возможность - запустить sshd на сервере Debian, например:

apt-get install openssh-server

Во всех основных операционных системах есть бесплатные клиенты ssh, способные создавать туннели через соединение ssh.