Проблема с настройкой 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 подключается, но ни пинги ни другая связь по каким либо портам на VPN не проходит.
VPN-сервер на Ubuntu-server 10.04.2 LTS
А пул выделенный для впн из сетки, которой разрешены соединения?
вы имеете ввиду iplocal?
Да, указан явным образом и равен 10.0.10.250, и более никем не занят, клиенту VPN тоже IP указан явным образом, и тоже никем не занят. Если отключаю фаервол(тоесть действие пол умолчанию), с Drop на ACCEPT, в фильтре на Forwarding и Input, то всё начинает ходить. Но опять же, открываются соединения через eth1, чего не надо.
PS: проблема именно в том, как заставить чтобы прописывались правильно правила при подключении VPN, и при отключении удалялись.
Для VPN надо еще разрешить гулять по GRE протоколу
[console]iptables -A INPUT -p gre -j ACCEPT # Разрешаем протокол GRE для всех
iptables -A INPUT -m tcp -p tcp --dport 1723 -j ACCEPT # Cоединение с PPTP-сервером для всех[/console]
Разрешил. Сейчас вытяну конфиги с линуховой машины и сюда сброшу.
Показать
###############################################################################
# $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
eth0 - сеть на которой есть интернет,находится внутри организации, все подключения с этого интерфейса открыты и имеют доступ.
Это ваша локалка в организации? А инет откуда с другого жлюза?
eth1 - сеть с которой не должны проходить никакие соединения в сеть организации, до подключения VPN.
А эт как? типо другая подсеть и доступ в eth0 ток по vpn?
сюда можно
iptables -L -n -v
ifconfig
route -n
Это ваша локалка в организации? А инет откуда с другого жлюза?
Да. Инет раздаётся на 10.0.0.0 сеть.
А эт как? типо другая подсеть и доступ в eth0 ток по vpn?
Очень просто. доступ из 192.168.0.0, подсети которая на eth1 в подсеть 10.0.0.0, только при подключённом VPN должен быть. а из eth0 в eth1 стандартно и без изменений(это уже настроено, проблема только с VPN).
сюда можно
iptables -L -n -v
ifconfig
route -n
> iptables -L -n -v
Chain INPUT (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
12 1324 ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0
26 3803 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
61 6267 ACCEPT all -- eth0 * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:1723
0 0 ACCEPT 47 -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth1 * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP 2 packets, 96 bytes)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- eth0 eth1 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- eth1 eth0 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain OUTPUT (policy ACCEPT 49 packets, 13906 bytes)
pkts bytes target prot opt in out source destination
> ifconfig
eth0 Link encap:Ethernet HWaddr 00:01:6c:d3:e3:58
inet addr:10.0.10.105 Bcast:10.0.10.255 Mask:255.255.255.0
inet6 addr: fe80::201:6cff:fed3:e358/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:488 errors:0 dropped:0 overruns:0 frame:0
TX packets:69 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:58179 (58.1 KB) TX bytes:27243 (27.2 KB)
Interrupt:19 Base address:0xe800
eth1 Link encap:Ethernet HWaddr 00:14:d1:16:1b:f3
inet addr:192.168.1.11 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::214:d1ff:fe16:1bf3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:8 errors:0 dropped:0 overruns:0 frame:0
TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:540 (540.0 B) TX bytes:618 (618.0 B)
Interrupt:19 Base address:0xec00
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:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1524 (1.5 KB) TX bytes:1524 (1.5 KB)
Таблица маршрутизации ядра протокола IP
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
10.0.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 10.0.10.10 0.0.0.0 UG 100 0 0 eth0
Зачем вы даёте подсеть на vpn из существующей сети?
localip 10.0.10.250
remoteip 10.0.10.240-255
Измените хотя бы на
localip 10.0.20.250
remoteip 10.0.20.240-255
После рестарт демона
Подключаемся с клиента и пробуем пингануть 10.0.20.250
Если не заработает подправьте скрипт как ниже
После доработаешь
IF_PPTP=${PPP_IFACE}
iptables -A INPUT -m udp -p udp --dport 53 -i ${IF_PPTP} -j ACCEPT
iptables -A FORWARD -i ${IF_PPTP} -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o ${IF_PPTP} -j ACCEPT
localip 10.0.20.250
remoteip 10.0.20.240-255
Поменял на:
localip 10.0.20.250
remoteip 10.0.20.251-255
пользователю test выдаётся IP принудительно 10.0.20.253
После правки скрипта как ниже. Тоже ничего.
При подключении с любой подсети(eth0, eth1), если это конечно важно.
ип диапазон оставьте как есть
Ради теста зделайте
iptables -P FORWARD ACCEPT
Надеюсь не забыли ещё
iptables -A POSTROUTING -s 10.0.20.0/255.255.255.0 -o eth0 -j MASQUERADE
Сейчас попробую Да. Посмтроутинг не прописывал.
Сам сервер у меня пингуется, если что... Сигнал дальше на 10-ую подсеть не идёт. И на инет тоже.
Ну POSROUTING надо.
И ещё на будущее от всяких там скриптов if-up можно зделать такс.
iptables -A FORWARD -s 10.0.20.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -d 10.0.20.0/24 -j ACCEPT
После этого смогут ходить ток vpn клиенты
iptables -P FORWARD ACCEPT
ТОже прописал. Как-то,.. Не сработало ничего. Сейчас попробую в таблице фаервола через -s -d прописать. НАверно кроме форварда надо ещё INPUT так же прописать?
Блин vpn подключился? Значиться на фиг INPUT.
Зделали?
iptables -P FORWARD ACCEPT
iptables -A POSTROUTING -s 10.0.20.0/255.255.255.0 -o eth0 -j MASQUERADE
Блин vpn подключился? Значиться на фиг INPUT.
Зделали?
iptables -P FORWARD ACCEPT
iptables -A POSTROUTING -s 10.0.20.0/255.255.255.0 -o eth0 -j MASQUERADE
VPN всегда подключался.. Ибо порты для PPTP и gre открыты. 10.0.20.250 тоже пингуется...
Да прописывал. Сейчас покумекаю ещё чего. Мне кажется if-up скрипты просто не подцепляются. а построутинг в ручную не прописывал. в общем 5 мин. )
Так. Отлично. пинги стали ходить.
Надо теперь с DNS решить траблу. По имени не пингуется. Прописал все разрешения в фаерволе, не используя скрипты.
PS: ТЬФУ! Всё работает короче. спс... Забыл совсем что сейчас траблы с инетом, а на запасном канале пинги во внешку порезаны.
В плане с dns пингуете по имени компа?
В плане с dns пингуете по имени компа?
Да не.. Норм всё... Внутри всё пингуется... наружу у прова просто ICMP порезан. Сейчас вот буду разбираться, как сделать чтобы при подключении VPN шара доменная виделась )))
Может за одним подскажете как правильно роутинг прописать для drweb ES. порты 2371 и 2193, сам drweb сервер скажем находится на 10.0.10.41, и надо чтобы на него был проходи с eth1(192.168.1.0/255.255.255.0)
PS: А так, проблема решена. Большое спасибо.