Настройка VPN-подключения в Linux
Примечание: все указанные команды выполняются от пользователя root
Для поднятия и настройки VPN-соединения нам потребуются всего две программы - ppp и pptp. Программа ppp, скорее всего, уже стоит в вашем дистрибутиве, пакет, содержащий pptp, в разных дистрибутивах называется по-разному, в основном pptp-linux.
Поставить их можно, например, из репозитариев на прилагающихся дисках.
После установки в системе должны присутствовать два исполняемых файла - /usr/sbin/pppd и /usr/sbin/pptp
проверить их наличие можно командой
which pppd
which pptp
Если программа установлена , то будет показан путь к ней.
Сетевой интерфейс (обычно eth0) ставится на авто-конфигурацию при помощи dhcp.
Проверим содержимое файла /etc/resolv.conf
cat /etc/resovl.conf
В ней должна находиться хотя бы одна из этих строк
nameserver 172.21.0.1
или
nameserver 91.201.116.11
Для дальнейших действий нам понадобится default gateway (шлюз по умолчанию)
Чтобы определить, какой у вас шлюз, введите команду
ip route
в ответ вы получите несколько строк, среди которых найдите
"default via 172.21.xx.1 dev eth0"
172.21.xx.1 и будет вашим шлюзом по умолчанию, запомните его, он нам еще пригодится.
Добавляем в таблицу маршрутизации маршрут к сети, в которой находится VPN-сервер, чтобы связь с сервером, а также с другими компьютерами в сети не терялась, когда у нас будет меняться шлюз:
route add -net 172.21.0.0 netmask 255.255.0.0 gw ваш_шлюз
Теперь эту команду желательно добавить в какой-либо скрипт, который выполняется при старте системы, чтобы не прописывать каждый раз маршрут руками. Например, в /etc/rc.d/rc.local
Создаем в папке /etc/ppp/peers файл с именем "provider"
cd /etc/ppp/peers
touch provider
Редактируем его, вместо "user" подставляем ваш логин (учетную запись):
name user
ipparam provider
nobsdcomp
nodeflate
noauth
pty "/usr/sbin/pptp 172.21.0.1 --nolaunchpppd"
опции defaultroute, replacedefaultroute пока не рассматриваем.
Модуль ppp_mppe грузить не надо, т.к шифрование не используется.
Правим файл /etc/ppp/chap-secrets (Добавляем в него строку с учетным именем и паролем (далее будет показан и другой способ хранения пароля)
user * password *
Где user и password, соответсвенно, имя вашей учетной записи и пароль.
Проверим работоспособность:
pppd call provider
ip link show или ifconfig
В списке интерфейсов должно появиться устройство с именем ppp0
Не пытайтесь на данном этапе выйти в Интернет, отключаем его и донастраиваем.
Прервать соединение можно командой (обратите внимание на кавычки)
kill `pidof pppd`
или
kill `cat /var/run/ppp0.pid`
Для того, чтобы после поднятия ppp-соединения у нас был Интернет, нужно объяснить системе, чтобы все пакеты, предназначенные для Интернет-узлов, система отправляла не на адрес 172.21.xx.1, а в поднятый нами ppp-туннель.
Для этого достаточно подменить шлюз по умолчанию, используемый системой.
Делается это командами:
route del default
route add default ppp0
Для того, чтобы эти команды выполнялись каждый раз при поднятии VPN-соединения, можно прописать эти команды в скрипт /etc/ppp/ip-up:
route del default
route add default $1
Теперь, после установления VPN-соединения, шлюз по умолчанию будет устанавливаться автоматически.
Также, после того, как происходит отключение от интернета, нужно восстановить прежний шлюз.
Для этого прописываем в /etc/ppp/ip-down
route del default
route add default gw ваш_шлюз
С помощью команды route -n можете посмотреть на таблицу маршрутизации и проследить, как она меняется после подключения/отключения соединения.
Файлы ip-up и ip-down должны быть исполняемыми.
Соедиение удобно подключать/отключать скриптами pon/poff
Если в вашем дистибутиве их нет, то можно скачать -
wget teleseti.com/files/Linux/pon
wget teleseti.com/files/Linux/poff
chmod +x pon poff
cp poff pon /usr/bin
теперь соединение можно запускать/прерывать командами
pon
poff
Если есть необходимость запускать соединение от простого пользователя, установите программу sudo и в файл /etc/sudoers впишите:
user localhost = NOPASSWD: /usr/bin/pon, /usr/bin/poff
При этом замените user и localhost на имя вашего пользователя и имя компьютера.
Во многих дистрибутивах этот файл можно редактировать только с помощью программы visudo.
Теперь можно запускать и прерывать соединение командами
sudo pon
sudo poff
Если VPN-соединений у вас будет несколько, то по примеру /etc/ppp/peers/provider можно создать файл /etc/ppp/peers/teleseti, откорректировав параметр ipparam в файле на teleseti, и тогда запускать/отключать Интернет придется командами
pon teleseti
poff teleseti
Также можно не хранить пароль в файле /etc/ppp/chap-secrets
а вписать его напрямую в файл teleseti -
cat /etc/ppp/peers/teleseti
---------------------------
name user
ipparam teleseti
password "password"
nobsdcomp
nodeflate
noauth
pty "/usr/sbin/pptp 172.21.0.1 --nolaunchpppd"
Если ничего не получилось:
1. Файервол (iptables) может блокировать соединения.
2. Если соединение устанавливается, но тут же в течении минуты рвется: Проверьте командой route -n , есть ли в таблице маршрутизации маршруты, о которых говорилось выше ( часто забывают занести установку маршрутов в /etc/rc.d/rc.local) и после перезрагрузки системы нужные маршруты не присутствуют в таблице.
3. Интерфейс ppp0 есть, то есть соединение установлено, а Интернета нет... У Вас по каким-то причинам не выполняется замена маршрута по умолчанию. Проверьте, прописали ли вы эту замену в ip-up, и исполняемый ли этот файл. Попробуйте выполнить эти команды (route del default; route add default ppp0 )вручную из командной строки. Проверьте, появился ли Интернет.
Просмотров: 1632
|