Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

Катя Брусникина

Правильная настройка vpn (pptp) в Linux

Рекомендованные сообщения

Чтобы поднять соединение VPN (PPTP) для начала настроим таблицу маршрутизации:

 

В коммандной строке прописываем следующее:

# Добавляем маршрут от шлюза к впн-серверу и к днс-серверам
# Чтобы не заморачиваться добавляем всю подсеть до шлюза,
# Обратите внимание шлюз, который нам выдал DHCP-сервер, в данном примере это 10.116.51.1
route add -net 172.18.48.0 netmask 255.255.255.0 gw 10.116.51.1
route add -net 172.18.49.0 netmask 255.255.255.0 gw 10.116.51.1

# Удаляем шлюз по умлолчанию, который выдал нам DHCP-сервер
# в данном случае это 10.116.51.1 на сетевом интерфейсе eth0
route del default gw 10.116.51.1 dev eth0

посоле этого можно проверить пинг до впн-сервера vpn.internet.beeline.ru

если пинг есть, значит маршруты прописаны верно

 

Создаём файл: /etc/ppp/beeline.pptp

# Тип авторизации не eap и не pap, т.е. либо chap либо chap+MD5
refuse-eap
refuse-pap

# Ваш логин
user ВАШ_ЛОГИН

# Вывод отладочной информации на консоль при коннэкте (не обязательный параметр)
#debug

#Устанавливать шлюз по умолчанию для соединения ppp
defaultroute

# Просто буквы (в данном примере beeline), если их не писать, тогда в файле /etc/ppp/chap-secrets
# можно будет написать просто звёздочку вместо них;
remotename beeline

# Переконнэкчиваться автоматически при разрыве связи
persist

# Номер ppp-соединения, в даннм случае будет ppp0 (не обязательный параметр)
# Актуально в том случае если Вы раздаёте интернет в свою локальную сеть (например 192.168.1.0/24)
unit 0

# Все нижеследующие параметры пописывать обязательно
# чтобы интернет не тормозил, без них у Вас скорость
# соединения будет на порядок, а то и на два ниже заявленной
nomppe
nomppc
sync
lock
nobsdcomp
nodeflate
noauth
nopcomp
noaccomp
updetach

 

Создаём файл /etc/ppp/peers/beeline

pty "pptp vpn.internet.beeline.ru --nolaunchpppd --sync --nobuffer"
file /etc/ppp/beeline.pptp

 

Записываем свой логин и пароль в файл /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client       server     secret      IP addresses
ВАШ_ЛОГИН      beeline    ВАШ_ПАРОЛЬ  *

 

После этого можно коннэктиться в сеть коммандой

pppd call beeline

 

Чтобы разовать соединение, используйте комманду

pkill pppd

 

Если Вы всё сделали чётко по инструции, то маршруты после поднятия впн командой route -n

будут выглядеть примерно сделующим образом

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
213.242.203.51  0.0.0.0         255.255.255.255 UH    0      0        0 ppp0
172.18.49.0     10.116.51.1     255.255.255.0   UG    0      0        0 eth0
172.18.48.0     10.116.51.1     255.255.255.0   UG    0      0        0 eth0
10.116.51.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

 

Если у Вас есть своя локальная сеть в которую Вы бы хотели раздавать интернет

через вторую сетевую карту, то делается это следующим образом:

например в сеть 192.168.1.0/24

 

Включем переброс пакетов в локальную сеть коммандой

echo 1 > /proc/sys/net/ipv4/ip_forward

 

В случае если у Вас статичный ип:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j SNAT --to-source ВАШ_СТАТИЧНЫЙ_ИП

 

В случае если у Вас динамичный ип:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ppp0 -j MASQUERADE

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Правильня настройка файервола

 

Политики доступа по умолчанию

 

# Устанавливаем по-умолчанию политику запрета для всех входящих соединений
iptables -P INPUT DROP

# Устанавливаем по-умолчанию политику запрета для транзитных соединений, 
#т.е. своей локальной сети которой мы будем или не будем раздавать интернет
iptables -P FORWARD DROP

# Устанавливаем по-умолчанию политику разрешения для всех исходящих соединений
iptables -P OUTPUT ACCEPT

 

Фильтрация входящих пакетов

 

# Разрешаем выходить везде локальному компу
iptables -A INPUT -i lo -j ACCEPT

# В случае если у нас есть своя локальная сеть, разрешаем доступ к этому компьтеру,
# где 192.168.0.0/24 - локальная сеть, а  eth1 сетевой интерфейс для локальной сети
iptables -A INPUT -s 192.168.0.0/24 -i eth1 -j ACCEPT

# Разрешаем себя пинговать всем
iptables -A INPUT -p icmp -m icmp ! --icmp-type 5 -j ACCEPT

# Разрешаем доступ для VPN-соеднинения (PPTP) с провайдером, где 172.18.48.0/24 - список VPN серверов провайдера vpn.internet.beeline.ru
iptables -A INPUT -p gre -s 172.18.48.0/24 -j ACCEPT
iptables -A INPUT -p tcp -m tcp -s 172.18.48.0/24 --dport 1723 -j ACCEPT

# Разрешаем доступ для DNS-серверов нашего провайдера
iptables -A INPUT -p udp -m udp -s 172.18.49.10 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -m udp -s 172.18.49.14 --dport 53 -j ACCEPT

# Разрешаем обратку трафика, в случае если соединение установлено, иначе будет выполняться политика по-умолчанию
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

 

Настройка фильтрации пакетов для локальной сети

 

# В случае, если у нас есть своя локальня сеть, разрешаем полный доступ в интернет 
# на соответствующем сетевом интерфейсе для соответствующей сети (192.168.0.0/24 и eth1 соответственно)
iptables -A FORWARD -i eth1 -s 192.168.0.0/24 -o ppp+ -j ACCEPT

# Разрешаем обратку трафика для локальной сети, в случае если соединение установлено, иначе будет выполняться политика по-умолчанию
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

 

Примечание: данная настройка не предполагает соединений с внешними FTP серверами в активном режиме

из соображений безопасности, потому как тогда бы пришлось открывать порты с 1024 по 65535, что не есть хорошо

 

В случае, если вы пользуетесь торрентом, то лучше указывать порт в явном виде, а не диапазон портов (из соображений безопасности)

 

 

Если вы используете rtorrent на этом компе, например на порту 27999, то прописываем следующее:

 

iptables -A INPUT -p tcp -m tcp --dport 27999 -j ACCEPT

 

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

которое будет инициализироваться торрентами, находящимися в интернете, в данном примере, это порт 27999

 

iptables -A FORWARD -o eth1 -d 192.168.0.0/24 -i ppp+ -p tcp -m tcp --dport 27999  -j ACCEPT

 

Чтобы настройки файрвола не потерялись при следующей загрузки компа:

 

# Сохраняем их в файл /etc/iptables
iptables-save > /etc/iptables

# При следующей загрузке компа, восстанавливаем их из файла /etc/iptables
iptables-restore < /etc/iptables

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Катяяяяя!!!!

Спасибо, ещё не попробовал, но очень рад, что в Екб есть люди, которые тоже озаботились этой проблемой

А есть конфиги для L2TP соединения?

 

Беру свои слова назад)

Всё настроил, на самом деле не хватало только маршрутов для полного счастья =)

правда скорость меня немного расстроила после Акадо...

ну да ладно, привыкну)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Правильная настройка xl2tpd (L2TP)

 

Таблица маршрутизации та же что и для pptp

route add -net 172.18.48.0 netmask 255.255.255.0 gw 10.116.51.1 dev eth0
route add -net 172.18.49.0 netmask 255.255.255.0 gw 10.116.51.1 dev eth0
route del default gw 10.116.51.1 dev eth0

 

Необходимые пакеты: iproute, pptp-linux, ppp, xl2tpd

Установить командой:

apt-get install iproute pptp-linux ppp xl2tpd

 

Основной файл конфигурации: /etc/xl2tpd/xl2tpd.conf

[global]
access control = yes

[lac beeline]
name = логин
lns = tp.internet.beeline.ru
require pap = no
require chap = yes
# Не использовать авторизацию в конфигураторе xl2tpd (только через /etc/ppp/chap-secrets)
require authentication = no
# Поднимать VPN автоматически при его падении
redial = yes
# Количество секунд для ожидания между неудачными переконнэктами
redial timeout = 30
# Максимальное количество неудачных переконнэктов
max redials = 1000
# Дополнительные настроки в дополнительном файле конфигурации
pppoptfile = /etc/ppp/options.beline.l2tp
# Поднимать соединение сразу после загрузки
autodial = yes
# Записывать подробную отладочную информацию в лог-файл
ppp debug = yes

 

Дополнительный файл конфигурации: /etc/ppp/options.beline.l2tp

lock
name логин

noauth
nobsdcomp
nodeflate
nopcomp
noaccomp
nomppe

refuse-eap
refuse-pap

connect /bin/true
remotename beeline
ipparam beeline
defaultroute
replacedefaultroute

persist
unit 0

updetach
usepeerdns

 

Логин и пароль записываем в: /etc/ppp/chap-secrets

логин    beeline    пароль    *

 

Поднять соединение:

/etc/init.d/xl2tpd start

 

Разорвать соединение:

/etc/init.d/xl2tpd stop

 

Примечание: По каким-то необъяснимым причинам при падении соединения иногда оно не может самостоятельно подняться.

Поэтому можно в расписание по команде: crontab -e добавить такую строчку:

* * * * * if [ ! -e /var/run/ppp0.pid ]; then /etc/init.d/xl2tpd restart; fi

 

За состоянием соедиения можно наблюдать в лог-файле по команде:

tail -f /var/log/syslog

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Большое спасибо, Катя! Ваша инструкция очень помогла.

Правильные маршруты прописались вот таким скриптом:

 

#!/bin/bash

GW=`route -n | grep 'UG[ \t]' | awk '{print $2}' | head -n 1`                   
DNS1=`grep nameserver /etc/resolv.conf | awk '{print $2}' | head -n 1`          
DNS2=`grep nameserver /etc/resolv.conf | awk '{print $2}' | tail -n 1`          

# default - this not need with option replacedefaultroute in ppp config         
#route del default                                                              
#route add default dev $PPP_IFACE                                               

# dns                                                                           
route add -host $DNS1 gw $GW                                                    
route add -host $DNS2 gw $GW                                                    

#get ips for tp.internet.beeline.ru. it`s try get all ip for tp.internet.beeline.ru 20 time with 1 second sleep
count=0                                                                         
while true; do                                                                  
if [ $count -eq 20 ]; then                                                     
 break                                                                         
fi                                                                             
IPS=`host tp.internet.beeline.ru | awk '{print $4}' | cut -d. -f1,2,3 | sort -u`
for IP in $IPS                                                                 
do                                                                             
 if [ "$IP1" == "" ]; then                                                     
  IP1=$IP                                                                      
 elif [ "$IP1" != "$IP" ]; then                                                
  IP2=$IP                                                                      
  break 2                                                                      
 fi                                                                            
done                                                                           
count=$(( $count+1 ))                                                          
sleep 1                                                                        
done 

#set routes for l2tp tunnel                                                     
if [ "$IP1" != "" ]; then                                                       
ip route add ${IP1}.0/24 via $GW                                               
echo "ip route add ${IP1}.0/24 via $GW"                                        
fi                                                                              
if [ "$IP2" != "" ]; then                                                       
ip route add ${IP2}.0/24 via $GW                                               
echo "ip route add ${IP2}.0/24 via $GW"                                        
fi

 

скрипт взят вот отсюда:

http://homenet.beeline.ru/index.php?showtopic=318573

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах