Нет, я просто конкретно торможу :( с нуля часов по сей момент сижу - не въезжаю.Постараюсь быстренько, а то голова уже не варит %(
Итак, есть локальная сеть 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 - им кукиш с маслом. И я делаю следующее -
>прописываю NAT.
Так не надо!
А разве нельзя использовать DNS или LDAP для них все нормально
работает их для ужесточения и придумали!
>Так не надо!Не, а как надо-то?
>А разве нельзя использовать DNS или LDAP для них все нормально
>работает их для ужесточения и придумали!Нельзя. ВПН используется для подсчета трафика биллингом.
не проще ли поставить прокси-сквид и там сделать авторизацию ? заодно будешь резать скорость, фильтровать порно и баннеры, отсекать mp3 и mpeg4 ?
>не проще ли поставить прокси-сквид и там сделать авторизацию ? заодно будешь
>резать скорость, фильтровать порно и баннеры, отсекать mp3 и mpeg4 ?
>Проще, я понимаю. Но я не могу использовать прокси по ряду причин. Нужно именно то, что я хочу :(
А включен - ли IP форвард на линухе ?
Проверь что у тебя на Линухе для PPPD есть ip default. Соответственно второй конец PPP при соединении через VPN. Если он у тебя не левый, фаирвольный, то советую поправить IP со стороны сервера для поднимающихся через VPN PPP. Там это все в pptp.conf прописывается.Bye.... Удачи....
>А включен - ли 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 eth1ifconfig следующий
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:0xd000eth1 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:0xdc00lo 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 прописаны?
Всё делается через iptables (IMHO)...
Запрещаешь по умолчанию INPUT и FORWARD, потом открываешь INPUT/FORWARD по порту, который юзает VPN и вперёд :) Можно ещё icmp разрешить, а то луди забоятся...iptables -P INPUT -j DROP (INPUT по умолчанию закрыть)
iptables -P FORWARD -j DROP (FORWARD по умолчанию закрыть)
>Всё делается через 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 вообще не пускают никуда.
У меня подобное поднято под 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
Проблема решена. Что называется, вник в роутинг.Всем клиентам выдаются адреса вида 10.0.х.х. На эти адреса и настроен маскарадинг. Адрес ВПН-сервера назначен как 10.0.0.1. Спасибо всем.