LINUX.ORG.RU
решено ФорумAdmin

VPN-сервер на Ubuntu 10.04.2 LTS


0

1

Проблема с настройкой VPN сервера на Ubuntu-server 10.04.2 LTS+Webmin 1.550.Настройка фаервола проходила через webmin.

Сейчас, есть 2 сети подключённые к eth0 и eth1 соответственно. eth0 - сеть на которой есть интернет,находится внутри организации, все подключения с этого интерфейса открыты и имеют доступ. eth1 - сеть с которой не должны проходить никакие соединения в сеть организации, до подключения VPN.

Фаервол вроде настроил, и работает как надо. Из одной сети пускает на прямик, из другой сигналы не проходят. Проблема состоит в том, что при подключении VPN соединения, не добавляются правила в фаервол на открытие всех портов и подключений с интерфейсов ppp*. Реализовывал методом который описан в этой статье. http://www.ylsoftware.com/news/538 Естественно интерфейсы переделывал на аналогии и вместо IF_EXT указывал напрямую интерфейс, то есть eth*. Скрипты фаервола указанные в статье не задействовал.

Конечное требование: С любого интерфейса должна быть возможность подключения VPN-клиентов и открытие им всех соединений. Сейчас VPN подключается, но ни пинги ни другая связь по каким либо портам не проходит.


Не к чему так развёрнуто писать, лучше выкладывай конфиги сюда в лоркоде, либо на pasterbin

iptables-save и pptpd

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

Конфиги. [spoiler]pptpd.conf:

###############################################################################
# $Id: pptpd.conf 4255 2004-10-03 18:44:00Z rene $
#
# Sample Poptop configuration file /etc/pptpd.conf
#
# Changes are effective when pptpd is restarted.
###############################################################################

# 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 10.0.10.250
remoteip 10.0.10.240-255
# or
#localip 192.168.0.234-238,192.168.0.245
#remoteip 192.168.1.234-238,192.168.1.245

pptpd-options:

###############################################################################
# $Id: pptpd-options 4643 2006-11-06 18:42:43Z rene $
#
# Sample Poptop PPP options file /etc/ppp/pptpd-options
# Options used by PPP when a connection arrives from a client.
# This file is pointed to by /etc/pptpd.conf option keyword.
# Changes are effective on the next connection.  See "man pppd".
#
# You are expected to change this file to suit your system.  As
# packaged, it requires PPP 2.4.2 and the kernel MPPE module.
###############################################################################


# 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, ...
# {{{
# 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)
# }}}




# 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 192.168.1.11
ms-dns 10.0.10.10
ms-dns 8.8.8.8
ms-dns 10.0.10.105

# 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.10.10
#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
logfile /var/log/pptpd.log

# 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 
require-mppe

/etc/ppp/ip-up.d/123

#!/bin/sh


IF_PPTP=${PPP_IFACE}
IP_PPTP=${PPP_REMOTE}

OUT_IFACES="eth0 eth1"

iptables -A INPUT -m udp -p udp --dport 53 -i ${IF_PPTP} -s ${IP_PPTP} -j ACCEPT

for eth1 in ${OUT_IFACES}; do
    iptables -A FORWARD -i ${IF_PPTP} -o eth1 -s ${IP_PPTP} -j ACCEPT
    iptables -A FORWARD -i eth1 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
done

iptables.up.rules:

# Generated by iptables-save v1.4.4 on Thu May  5 19:50:30 2011
*nat
:OUTPUT ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#NAT для главной локальной сети, смотрящий на ограниченную локальную сеть.
-A POSTROUTING -s 10.0.0.0/255.0.0.0 -o eth1 -j MASQUERADE
COMMIT
# Completed on Thu May  5 19:50:30 2011
# Generated by iptables-save v1.4.4 on Thu May  5 19:50:30 2011
*mangle
:PREROUTING ACCEPT [73:6219]
:INPUT ACCEPT [38:3642]
:FORWARD ACCEPT [33:2477]
:OUTPUT ACCEPT [14:5343]
:POSTROUTING ACCEPT [47:7820]
COMMIT
# Completed on Thu May  5 19:50:30 2011
# Generated by iptables-save v1.4.4 on Thu May  5 19:50:30 2011
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Разрешаем трафик с внутреннего интерфейса.
-A INPUT -i lo -j ACCEPT
# Впускаем ответы на запросы которые сами отправили.
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Разрешаем весь трафик со стороны сети департамента(главной локальной сети+интернет)
-A INPUT -i eth0 -j ACCEPT
# Разрешаем весь трафик необходимый для работы PPTP-сервера.
-A INPUT -p tcp -m tcp --dport 1723 -j ACCEPT
-A INPUT -p gre -j ACCEPT
-A INPUT -m state -i eth1 --state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i eth0 -o eth1 -j ACCEPT
# Разрешаем пересылку в локальную сеть ответов на исходящие запросы.
-A FORWARD -m state -i eth1 -o eth0 --state ESTABLISHED,RELATED -j ACCEPT
# -A INPUT -p tcp -m tcp --dport 2371 -j ACCEPT -A INPUT -p udp -m udp --dport 2371 -j ACCEPT 
# Разрешаем все пинги.
-A INPUT -p icmp -j ACCEPT
COMMIT
# Completed on Thu May  5 19:50:30 2011

[/spoiler]

Mefix ()
Ответ на: комментарий от anton_jugatsu

Чуть позже протестирую... Машина для тестов в даун ушла, видимо сетевая прогорела.

Mefix ()

Старческое брюзжание.

Проблема с настройкой VPN сервера на Ubuntu-server 10.04.2 LTS+Webmin 1.550.Настройка фаервола проходила через webmin.

сервера...webmin

Вот и подросло поколение, которое...

Camel ★★★★★ ()

man vpn
man iptables


Выше уже написали, но давайте еще все вместе посмеёмся над этим:
############################
localip 10.0.10.250
remoteip 10.0.10.240-255
############################

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

Не дало вразумительных результатов. А точнее никаких изменений. VPN как был дохлый так и остался.

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

>помочь не судьба.

Помогать людям через webmin сервер настраивать? NO WAI!

Откуда нам знать, что pptp-сессии поднимаются? Откуда нам знать, идут пинги с клиента до сервера, или нет? Откуда мы видим выхлоп иптаблес в тот момент, когда как бы открыта vpn-сессия? Единственное, что сейчас вменяемое видно, так это конфиг pptpd в котором уже видны ошибки.

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

ip клиенту выдаются вручную. Тоесть никоим образом он не будет равен iplocal. Я в курсе, что не правильно написано. И потом уже при приведении в рабочее состояние там диапазон бы всёравно менялся на *.151-255, а iplocal был бы 150. А т.к. тест происходит только пока при подключенни 1-ого -2-ух клиентов, то выше 242 никак бы не дошло. Ибо очерёдно сперва выдаются адреса. В моём понимании. Конечно с линуксом я работаю очень не много и лузер во многих, даже очень вопросах. А webmin был выбран, только ради того чтобы посмотреть что это за весчь, и для наглядности, + чтобы не ставить иксы. Во всяком случае это пока временное решение в плане того что на отдельной машине находится. Далее это всё будет на виртуалке.

PS: я вполне понимаю что допускаю ошибки, из-за этого прошу помощи, причём явной, а не косвенно подсказывающей: гыгы, лоло, смешно, RTFM тебе.

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

Ну как я вижу, PPTP коннект происходит, и сессия то вроде поднялась. Вот только порты заблокированы. Ибо не прописались правила на открытие портов.

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

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

Это видно из сислога? Клиент может пинговать сервер?

Вот только порты заблокированы. Ибо не прописались правила на открытие портов.


Если вручную прописать правила, после того, как сессия началась, пинги пойдут?

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

> Это видно из сислога? Клиент может пинговать сервер?

Да.

> Если вручную прописать правила, после того, как сессия началась, пинги пойдут?

Нет.

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

Тогда нужно посмотреть на выхлоп iptables-save в то время, когда поднята сессия pptp + выхлоп от " cat /proc/sys/net/ipv4/ip_forward "

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

1 равен. Сейчас уже не используя скрипты в фаерволе правила прописал через -s -d и маскрирование так же. Такое ощущение что тупо скрипты не подцеплялись. В общем как бы заработало.

Теперь трабла в другом по DNS имени не пингуется и не заходится никуда.

Mefix ()

*отвлекшись от основной темы*
это что:

for eth1 in ${OUT_IFACES}; do
    iptables -A FORWARD -i ${IF_PPTP} -o eth1 -s ${IP_PPTP} -j ACCEPT
    iptables -A FORWARD -i eth1 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
done

где в теле цикла используется итераяионная переменная ${eth1}?

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

а теперь еще раз:
твоё:

for eth1 in ${OUT_IFACES}; do
    iptables -A FORWARD -i ${IF_PPTP} -o eth1 -s ${IP_PPTP} -j ACCEPT
    iptables -A FORWARD -i eth1 -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
done
с сайта по ссылке:
# Перебираем интерфейсы
for IF_EXT in ${OUT_IFACES}; do
    # Разрешаем трафик с клиента через этот интерфейс
    iptables -A FORWARD -i ${IF_PPTP} -o ${IF_EXT} -s ${IP_PPTP} -j ACCEPT
    # Разрешаем трафик с этого интерфейса в сторону клиента
    iptables -A FORWARD -i ${IF_EXT} -o ${IF_PPTP} -d ${IP_PPTP} -m state --state RELATED,ESTABLISHED -j ACCEPT
done
так где там чё? ;)

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

Понял.. Дурак. Не думал что он в скрипте будет искать принудительно переменную, а не сможет выцепить eth*, как интерфейс сам.

В общем без скриптов вроде как сделал. Всё работает. Хотя может за одним подскажете как правильно роутинг прописать для drweb ES. порты 2371 и 2193, сам drweb сервер скажем находится на 10.0.10.41, и надо чтобы на него был проходи с eth1(192.168.1.0/255.255.255.0)

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

не мешай всё в кашу. рутинг и порты - две большие разницы, как говорят у нас в Одессе. (с) ;)

и да, телепаты в отпуске. проблема не ясна, топология сети не видна, и вообще, это уже тема другого топика :)

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

ну ясно.. ТОпик. ОФФ. Думаю сам разберусь. Темболее вроде уже делал. Осталось только вспомнить )

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