Нестандартное подключение. pptp в Linux

Имеется – компьютер в локальной сети с Ubuntu 9.04, подключаемый к интернету с помощью двух vpn-соединений. первое нужно для связи с vpn-сервером провайдера, второе – для непосредственно выхода в инетернет.

Перво-наперво ставим пакеты ppp и pptp.
Затем необходимо (в моем случае) прописать необходимые маршурты к первому vpn-серверу (да, вот такие извращения…):

#!/bin/sh
route add -net 10.12.5.0/24 gw 10.12.5.1
route add -net 10.12.51.0/24 gw 10.12.5.1
route add -net 10.12.4.0/24 gw 10.12.5.1
route add -host 10.10.10.10 gw 10.12.5.1
route add -host 10.10.10.78 gw 10.12.5.1

Лучше всего будет прописать их в настройках ethernet соединения, чтобы вставали автоматически.

Затем создаем файлик /etc/ppp/peers/vpn

$sudo -i //чтобы лишний раз не заморачиваться насчет прав
#cd /etc/ppp/peers
#touch vpn
#mcedit vpn

Содержание файла:

pty "pptp 10.12.51.226 --nolaunchpppd" //ип сервера, с которым соединяемся
user yourlogin
password "YoUrPaSsWoRd" //обязательно в кавычках!
nodeflate
nobsdcomp
noauth
require-mppe-128
mtu 1460
refuse-eap
refuse-chap
refuse-mschap

Далее открываем файлик /etc/ppp/ip-up и добавляем в конец строки:

route add -net 10.255.0.0/16 dev ppp0

Этот маршрут необходим, чтобы связаться с сервером провайдера именно через это vpn-соединение

Пробуем:

#pppd call vpn debug nodetach

Последние две опции необходимы для отладки. Наблюдаем в консоли примерно такую картину:

using channel 2
Using interface ppp0
Connect: ppp0 <--> /dev/pts/0
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfReq id=0x1  ]
sent [LCP ConfAck id=0x1  ]
sent [LCP ConfReq id=0x1    ]
rcvd [LCP ConfAck id=0x1    ]
sent [LCP EchoReq id=0x0 magic=0x33368137]
rcvd [CHAP Challenge id=0x1 , name = "bras8"]
sent [CHAP Response id=0x1 , name = "unicorn2"]
rcvd [LCP EchoRep id=0x0 magic=0x36da4966]
rcvd [CHAP Success id=0x1 ""]
CHAP authentication succeeded
CHAP authentication succeeded
sent [IPCP ConfReq id=0x1  ]
rcvd [IPCP ConfReq id=0x1 ]
sent [IPCP ConfAck id=0x1 ]
rcvd [IPCP ConfRej id=0x1 ]
sent [IPCP ConfReq id=0x2 ]
rcvd [IPCP ConfNak id=0x2 ]
sent [IPCP ConfReq id=0x3 ]
rcvd [IPCP ConfAck id=0x3 ]
Cannot determine ethernet address for proxy ARP
local  IP address 89.178.77.182
remote IP address 195.14.38.8
Script /etc/ppp/ip-up started (pid 4072)
Script /etc/ppp/ip-up finished (pid 4072), status = 0x0

У нас появилось новое сетевое устройство ppp0.

Пингуем vpn провайдера:

#ping 10.255.0.1 

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

Далее создаем файлик /etc/ppp/peers/internet:

pty "pptp 10.255.0.2 --nolaunchpppd" //адрес vpn-сервера провайдера
user yourlogin
password "YoUrPaSsWorD"
nodeflate
nobsdcomp
noauth
require-mppe-128
mtu 1460
refuse-eap
refuse-chap
refuse-mschap

В конец файла /etc/ppp/ip-up дописываем:

route add default dev ppp1

Соединяемся:

pppd call internet debug nodetach

Если все прошло успешно, у нас должен появится инет. Если нет – курим маршруты и настройки соединения.

теперь vpn можно поднимать двумя командами:

pppd call vpn
pppd call internet 

Только прошу обратить внимание, что демон pppd требует рутовых прав 🙂

Leave a Reply