Нестандартное подключение. 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 <asyncmap 0x0> <magic 0x33368137> <pcomp> <accomp>] rcvd [LCP ConfReq id=0x1 <auth chap MD5> <magic 0x36da4966>] sent [LCP ConfAck id=0x1 <auth chap MD5> <magic 0x36da4966>] sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x33368137> <pcomp> <accomp>] rcvd [LCP ConfAck id=0x1 <asyncmap 0x0> <magic 0x33368137> <pcomp> <accomp>] sent [LCP EchoReq id=0x0 magic=0x33368137] rcvd [CHAP Challenge id=0x1 <f872f6df5542429b46d6cf7e89a3386c>, name = "bras8"] sent [CHAP Response id=0x1 <ebb4965e871c49a07565b148dc2dbf29>, 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 <compress VJ 0f 01> <addr 0.0.0.0>] rcvd [IPCP ConfReq id=0x1 <addr 195.14.38.8>] sent [IPCP ConfAck id=0x1 <addr 195.14.38.8>] rcvd [IPCP ConfRej id=0x1 <compress VJ 0f 01>] sent [IPCP ConfReq id=0x2 <addr 0.0.0.0>] rcvd [IPCP ConfNak id=0x2 <addr 89.178.77.182>] sent [IPCP ConfReq id=0x3 <addr 89.178.77.182>] rcvd [IPCP ConfAck id=0x3 <addr 89.178.77.182>] 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 требует рутовых прав :)