URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 34012
[ Назад ]

Исходное сообщение
"Настройка VPN (pptpd) под линуксом. Не догоняю..."

Отправлено Justas , 29-Авг-03 06:39 
Нет, я просто конкретно торможу :( с нуля часов по сей момент сижу - не въезжаю.

Постараюсь быстренько, а то голова уже не варит %(

Итак, есть локальная сеть 192.168.0.0/16. Вся сеть ходит в инет через сервер 192.168.0.1 (eth0), у которого внешний интерфейс 194.76.45.35(eth1) с шлюзом у провайдера - 194.76.45.33.

Сервер linux ядро 2.4.20-8 (redhat9).

Для ужесточения безопасности было принято решение перевести юзеров локальной сети на соединение с сервером через VPN. То есть, если юзер хочет получить инет, он соединяется с сервером и радуется жизни.

Компоненты, установленные в системе:

1. Ядро поддерживает все необходимые модули, в т.ч. CONFIG_NET_IPGRE=m
2. PPP - ppp-2.4.2_cvs_20030610-1
3. pptp - pptpd-1.1.3-4

Файлы настройки pptpd следующие:

--- /etc/pptpd.conf ---

option /etc/ppp/options.pptpd
localip 192.168.0.1

#

--- /etc/ppp/options.pptpd ---

lock
debug
name vpn.domain.org
auth
require-chap
refuse-pap
ms-dns 192.168.0.1
proxyarp
192.168.0.1:

#

--- /etc/ppp/options ---

lock

#

--- /etc/ppp/chap-secrets ---

# client        server  secret                  IP addresses
user            *       "123"                   192.168.200.2
user2           *       "123"                   192.168.201.2
user3           *       "123"                   192.168.202.2
user4           *       "123"                   192.168.203.2
#


==========================


Т.е. юзер, соединяющийся с сервером 192.168.0.1 получает адрес 192.168.200.2.

Сервер запускается и принимает входящие подключения, выдаёт IP-адреса и так далее. ВСЁ ЗАМЕЧАТЕЛЬНО!

Но это ничто. Ведь юзеры хотят в интернет. А после соединения с VPN - им кукиш с маслом. И я делаю следующее - прописываю NAT.

iptables -t nat -A POSTROUTING -o eth1 -s 192.168.200.0/24 -j SNAT --to 194.76.45.35
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.201.0/24 -j SNAT --to 194.76.45.35
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.202.0/24 -j SNAT --to 194.76.45.35
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.203.0/24 -j SNAT --to 194.76.45.35

Т.е. указываю, что через eth1 в инет попадут все адреса с 192.168.200.1 по 192.168.203.254, то есть те, которые выдаются VPN-сервером.

И всё бы замечательно, если бы не одно но! (я сейчас заплАчу :-( ) Если в сети какой-нибудь юзер на своей сетевой карте сменит вручную свой IP на, например, 192.168.200.50 и пропишет шлюз 192.168.0.1, то он без никакого VPN, напрямую, без авторизации попадает в интернет, потому как nat пропускает всех по умолчанию и не спрашивая паролей. ;-(

Я честно запарился с этим :(

НАРОД!! Помогите, пожалуйста! Как сделать, чтобы доступ в инет имели ТОЛЬКО ТЕ, кто пройдет авторизацию на vpn-сервере?


Содержание

Сообщения в этом обсуждении
"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено ice_one1 , 29-Авг-03 09:53 
>Но это ничто. Ведь юзеры хотят в интернет. А после соединения с
>VPN - им кукиш с маслом. И я делаю следующее -
>прописываю NAT.
Так не надо!
А разве нельзя использовать DNS или LDAP для них все нормально
работает их для ужесточения и придумали!

"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено Justas , 29-Авг-03 13:37 
>Так не надо!

Не, а как надо-то?

>А разве нельзя использовать DNS или LDAP для них все нормально
>работает их для ужесточения и придумали!

Нельзя. ВПН используется для подсчета трафика биллингом.


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено iiws , 29-Авг-03 14:04 
не проще ли поставить прокси-сквид и там сделать авторизацию ? заодно будешь резать скорость, фильтровать порно и баннеры, отсекать mp3 и mpeg4 ?

"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено Justas , 29-Авг-03 14:09 
>не проще ли поставить прокси-сквид и там сделать авторизацию ? заодно будешь
>резать скорость, фильтровать порно и баннеры, отсекать mp3 и mpeg4 ?
>

Проще, я понимаю. Но я не могу использовать прокси по ряду причин. Нужно именно то, что я хочу :(


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено gotik , 29-Авг-03 14:20 
А включен - ли IP форвард на линухе ?
Проверь что у тебя на Линухе для PPPD есть ip default. Соответственно второй конец PPP при соединении через VPN. Если он у тебя не левый, фаирвольный, то советую поправить IP со стороны сервера для поднимающихся через VPN PPP. Там это все в pptp.conf прописывается.

Bye.... Удачи....


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено Justas , 29-Авг-03 17:13 
>А включен - ли IP форвард на линухе ?

Да

>Проверь что у тебя на Линухе для PPPD есть ip default.

Как? Я более подробно опишу:

Сеть 192.168.0.0/16

Т.е. есть сегмент 192.168.0.1-254
192.168.1.1-254
192.168.2.1-254

Все ходят в инет через сервер

LAN <-- 192.168.0.1 | 194.76.45.35 --> INET

Шлюз к провайдеру - 194.76.45.33

Таблица роутов при этом следующая

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
194.76.45.32    0.0.0.0         255.255.255.224 U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 pentanet0
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.0.0     U     0      0        0 pentanet0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         194.76.45.33    0.0.0.0         UG    0      0        0 eth1

ifconfig следующий

eth0      Link encap:Ethernet  HWaddr 00:00:21:22:26:6E
          inet addr:192.168.0.1  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:143427 errors:0 dropped:0 overruns:0 frame:0
          TX packets:14982 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:9114099 (8.6 Mb)  TX bytes:2074247 (1.9 Mb)
          Interrupt:10 Base address:0xd000

eth1      Link encap:Ethernet  HWaddr 00:00:C2:43:36:23
          inet addr:194.76.45.35  Bcast:194.76.45.63  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:5280 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40504 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:624738 (610.0 Kb)  TX bytes:2555161 (2.4 Mb)
          Interrupt:12 Base address:0xdc00

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:6107 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6107 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:516544 (504.4 Kb)  TX bytes:516544 (504.4 Kb)

pentanet0 Link encap:Ethernet  HWaddr 00:30:6A:80:97:B4
          inet addr:192.168.0.100  Bcast:192.168.255.255  Mask:255.255.0.0
          UP BROADCAST 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)
          Interrupt:9 Base address:0x5000

Интерфейс - pentanet0 - спутниковая карта, но она сдесь нафиг не сдалась.

При установлении VPN клиентам из сети 0.0 выдаются адреса

192.168.200.1-254

Т.е., клиенту 192.168.0.2 выдастся адрес 192.168.200.2.

Соответственно, и с другими клиентами.

Клиенту 1.67 выдастся адрес 201.67, клиенту 2.50 - 202.50.


Мне посоветовали, цитирую:

"ну и замечатльно.

теперь тебе надо прописать роутинг внутрь сети не для 192.168.0.0/16, а для только тех сетей, что там есть (192.168.100.0/16,192.168.101.0/16,192.168.102.0/16 и т.д.). Тогда у тебя из инета пакеты на 192.168.201.0/16 и подобным не будут роутится внтурь сети. А будут либо разворачиваться на дефолт-гв (инет, т.е. послыаться нах, что и нужно), либо идти в впн-овский тунель, если он в данный момент запущен."

Однако собеседник ошибся. У меня сегменты не 192.168.100-102.0, а 192.168.0-2.0. И вот я думаю, каким макаром мне правильно прописать роутинг?

---

>Соответственно
>второй конец PPP при соединении через VPN.

Не понял :(

Если он у тебя
>не левый, фаирвольный, то советую поправить IP со стороны сервера для
>поднимающихся через VPN PPP.

remoteip чтоли? А зачем, если они статически в chap-secrets прописаны?


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено MayVortex , 10-Сен-03 12:46 
Всё делается через iptables (IMHO)...
Запрещаешь по умолчанию INPUT и FORWARD, потом открываешь INPUT/FORWARD по порту, который юзает VPN и вперёд :) Можно ещё icmp разрешить, а то луди забоятся...

iptables -P INPUT -j DROP (INPUT по умолчанию закрыть)
iptables -P FORWARD -j DROP (FORWARD по умолчанию закрыть)


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено Justas , 15-Сен-03 11:21 
>Всё делается через iptables (IMHO)...

Дело в том, что сервер обслуживает еще DNS, HTTPd, MAIL и проч. сервисы. Помимо этого ЗА этим сервером дальше есть еще один сервер, доступ к которому нужен для всех полный.

По поводу INPUT/FORWARD... Да, это мысль. Но морока с закрытием/открытием портов и настройкой прав выливается в кучу строчек в таблицах iptables. Мне тут посоветовали, например

iptables -P FORWARD DROP
iptables -A FORWARD -i ppp+ -o eth1 -s 192.168.200.0/24 -j ACCEPT
iptables -A FORWARD -o ppp+ -i eth1 -d 192.168.200.0/24 -j ACCEPT

В чем есть логика (пускать/выпускать пакеты только по VPN-ифейсам (ppp)). Однако при такой конфигурации iptables вообще не пускают никуда.


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено MentatXX , 24-Сен-03 14:09 
У меня подобное поднято под FreeBSD, только там еще более завороченно
192.168.1.0/24 - локалка, из нее для
192.168.1.0/28 нужен прямой доступ в Инет, для остальных поднят VPN
на 192.168.2.0/24.
вообщем на IPFW правило выглядят примерно так:

00051    0       0 divert 8668 ip from 192.168.1.0/28 to any via xl0
00052    0       0 unreach port tcp from 192.168.1.0/24 to ПроксяПрова 3128 via xl0
00053    0       0 unreach port tcp from 192.168.1.0/24 to ПроксяПрова 3128 via xl0
00054    8     370 divert 8668 ip from 192.168.1.0/24 to СетьКемпинга1 via xl0
00055    0       0 divert 8668 ip from 192.168.1.0/24 to СетьКемпинга2 via xl0
00056    8     371 divert 8668 ip from 192.168.1.0/24 to СетьКемпинга3 via xl0
00058   33    1526 divert 8668 ip from 192.168.2.0/24 to any via xl0
00060 2403 2101535 divert 8668 ip from any to ВнешнийАдресс via xl0
00100  104   15876 allow ip from any to any via lo0
00200    0       0 deny ip from any to 127.0.0.0/8
00300    0       0 deny ip from 127.0.0.0/8 to any
30000 2345 2098147 allow ip from any to ВнешийАдресс via xl0
31000    0       0 deny ip from not ВнешнийАдресс to any out xmit xl0
35000 1023   50332 allow ip from any to 192.168.1.1
35100    0       0 allow ip from any to ВнешнийАдресс
65535 3974 1676416 allow ip from any to any


"Настройка VPN (pptpd) под линуксом. Не догоняю..."
Отправлено Justas , 07-Окт-03 14:18 
Проблема решена. Что называется, вник в роутинг.

Всем клиентам выдаются адреса вида 10.0.х.х. На эти адреса и настроен маскарадинг. Адрес ВПН-сервера назначен как 10.0.0.1. Спасибо всем.