Vpn в Linux

  • Автор темы Hetman
  • Дата начала
Статус
Закрыто для дальнейших ответов.
H

Hetman

Гость
#1
OS: Fedora Core 7

Ситуация такая:
Мне удалось настроить SOLO-VPN. Для установления соединения приходится каждый раз выполнять последовательность комманд:
Код:
#route del -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.3.1
# pptp 195.222.71.201 nodetach user [user_name]
Using interface ppp0
Connect: ppp0 <--> /dev/pts/9
CHAP authentication succeeded
CHAP authentication succeeded
not replacing existing default route via 192.168.3.1
local IP address 195.222.67.97
remote IP address 195.222.71.240
соединение устанавливается, но каждый раз это делать не удобно.
в нете нашёл скрипт
Код:
#!/bin/sh

#
# fix broken path
#
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH

#
# network settings
#
USER=221784vp2
NETWORK=192.168.0.0 # // настроить на для своей сети
NETMASK=255.255.0.0 #// обычно вроде такая и останется
VPNSERVER=192.168.21.201 #// Смените на ваш адрес vpn-сервера
GATEWAY=192.168.3.1 #// Указать свой
DEVICE=eth0 #// если нужно, то тоже сменить

#
# vpn stuff
#
PPPD=/usr/sbin/pppd
PPTP=/usr/sbin/pptp

if [ ! -x $PPPD ]; then
echo «$0: $PPPD not found»
exit 1
fi

if [ ! -x $PPTP ]; then
echo «$0: $PPTP not found»
exit 1
fi

#
# here we go
#
case «$1» in
start)
if [ ! -d /var/run/pptp ]; then
mkdir /var/run/pptp
fi
if [ -f /var/run/pptp/remote ]; then
if ping -vc1 'cat /var/run/pptp/remote'; then
exit 1
fi
killall -HUP pptp
killall -TERM pppd
sleep 2
fi
rm -rf /var/run/pptp/* >/dev/null
route del default
route add -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
echo -n «===> Starting vpn: »
($PPTP $VPNSERVER defaultroute noauth user $USER && \
echo -n «done») || echo -n «failed»
echo
;;
stop)
echo -n «===> Stopping vpn: »
killall -HUP pptp
killall -TERM pppd
sleep 2
rm /var/run/pptp/* >/dev/null
route del -net $NETWORK netmask $NETMASK gw $GATEWAY dev $DEVICE
route add default gw $GATEWAY dev $DEVICE
echo «done»
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo «*** Usage: vpn {start|stop|restart}»
exit 1
;;
esac

exit 0
Но он почему-то не работает (при запуске у меня выдаёт что не найдены команды stop|restart)
А сделать свой скрипт не получается.
Он у меня разбит на 2 файла.
1-й "vpn-start"
Код:
#/bin/bash

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:.
export PATH

# network settings
USER="2*****vp2"		# логин для доступа в интернет
NETWORK="192.168.0.0"		# настроить для своей сети
NETMASK="255.255.0.0"		# обычно вроде такая и останется или "255.255.255.0"
VPNSERVER="192.168.21.201" 	# Смените на ваш адрес vpn-сервера
GATEWAY="192.168.3.1"		# шлюз
DEVICE=eth0			# устройство (сетевая карта) смотрящая в LAN

./solo-routing $VPNSERVER $GATEWAY # спрашивайте у провайдера
route del -net 0.0.0.0 netmask 0.0.0.0 gw $GATEWAY # необходимо!
echo '============================='
route -n # показываем изменения в таблице машрутизации
echo '============================='

# например:
# pptp 195.222.71.201 nodetach user 221784vp2 
pptp $VPNSERVER nodetach user $USER # установка соединения
# route add -net 0.0.0.0 netmask 0.0.0.0 dev ppp0
Второй - "solo-routing" (необязательный)
Код:
#/bin/bash
# network settings
VPNSERVER=$1 # 195.222.071.201
GATEWAY=$2  # 192.168.003.001

route add -host 195.222.70.29 gw $GATEWAY
route add -host 195.222.70.30 gw $GATEWAY
route add -host 195.222.70.31 gw $GATEWAY
route add -host 195.222.70.32 gw $GATEWAY
route add -host $VPNSERVER gw $GATEWAY
route add -host 195.222.64.67 gw $GATEWAY
route add -host 195.222.70.114 gw $GATEWAY
route add -host 195.222.70.10 gw $GATEWAY
route add -host 195.222.70.238 gw $GATEWAY
route add -host 195.222.90.193 gw $GATEWAY
route add -host 195.222.70.198 gw $GATEWAY
route add -host 195.222.70.230 gw $GATEWAY
route add -host 195.222.70.202 gw $GATEWAY
route add -host 195.222.70.214 gw $GATEWAY
route add -host 195.222.90.2 gw $GATEWAY
route add -host 195.222.70.218 gw $GATEWAY
route add -host 195.222.70.190 gw $GATEWAY
route add -host 195.222.70.222 gw $GATEWAY
echo "solo routing are done!"
так вот если вручную вбивать команды в терминале (см. выше) то всё OK, если запустить скрипт - соединение не устанавливается. при этом DNS как бы нет.
до запуска скрипта
Код:
# route -n
Kernel IP routing table
Destination	 Gateway		 Genmask		 Flags Metric Ref	Use Iface
195.222.71.240 0.0.0.0		 255.255.255.255 UH	0	 0		0 ppp0
192.168.122.0  0.0.0.0		 255.255.255.0  U	 0	 0		0 virbr0
169.254.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 eth0
0.0.0.0		 192.168.3.1	 0.0.0.0		 UG	0	 0		0 eth0
# ping ya.ru
PING ya.ru (213.180.204.8) 56(84) bytes of data.

--- ya.ru ping statistics ---
7 packets transmitted, 0 received, 100% packet loss, time 5999ms

[CTRL+C]
DNS работает, хоть пинг и не проходит(как и должно быть). А после запуска скрипта - нет.

Код:
 #route -n
Kernel IP routing table
Destination	 Gateway		 Genmask		 Flags Metric Ref	Use Iface
195.222.70.214 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.198 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.90.193 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.64.67  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.230 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.114 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.32  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.90.2	192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.10  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.190 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.222 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.238 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
192.168.21.201 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.30  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.31  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.218 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.202 192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
195.222.70.29  192.168.3.1	 255.255.255.255 UGH  0	 0		0 eth0
192.168.122.0  0.0.0.0		 255.255.255.0  U	 0	 0		0 virbr0
169.254.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 eth0
# ping ya.ru
connect: Сеть недоступна
и соединение перестаёт запускаться в ручную
Код:
# /usr/sbin/pptp 195.222.71.201 nodetach user 2*****vp2
anon warn[pptp_gre_bind:pptp_gre.c:95]: connect: Network is unreachable
anon fatal[main:pptp.c:284]: Cannot bind GRE socket, aborting.
подозреваю что это какая-то особенность Федоры. Подскажите что предпринять. Если удастся всё сделать, собираюсь сделать полный FAQ на тему.
P.S.
инет через VPN в Fedore core 7 ИМХО работает медленно - иногда большие задержки
 
P

Plashchynski

Гость
#2
Но он почему-то не работает (при запуске у меня выдаёт что не найдены команды stop|restart)
Строка в скрипте:
echo «*** Usage: vpn {start|stop|restart}»

Скрипт хочет явного указания параметра, запускай:
<имя_скрипта> start для запуска.
Соответственно stop для остановки и restart для перезапуска.

Вообще лучше почитай:
http://oz.by/books/more.phtml?id=102899&partner=homenet

Тебе это больше поможет, чем глупые вопросы на форумах :(
 
H

Hetman

Гость
#3
<!--QuoteBegin-Plashchynski+2:11:2007, 22:23 -->
<span class="vbquote">(Plashchynski @ 2:11:2007, 22:23 )</span><!--QuoteEBegin-->Строка в скрипте:
echo «*** Usage: vpn {start|stop|restart}»

Скрипт хочет явного указания параметра, запускай:
<имя_скрипта> start для запуска.
Соответственно stop для остановки и restart для перезапуска.

Вообще лучше почитай:
[snapback]84128" rel="nofollow" target="_blank[/snapback]</div>[/quote]
зря ты так думаешь! я пытаюсь запустить скрипт именно командой "vpn start" явно указывая, что хочу сделать, но скрипт выдаёт ошибку. повторяю возможно это кая-то особенность 7-й федоры но этот скрипт там не пашет! ругается именно на эту строку "echo «*** Usage: vpn {start|stop|restart}»"
А твоя ссылка битая!
 
L

Llama

Гость
#4
Ну если у вас есть последовательность командкоторая поднимает VPN - запишите её в файл, напишите впереди #!/bin/bash, сделайте файл исполнимым и используйте его...
Отдельно можно скажем сделать обработку параметров start и stop.
Для того, чтобы после запуска VPN pptp/pppd демонизировались и отдавали терминал - замените в вызове nodetach на detach
Для остановки используйте что-то типа kill -SIGTERM `pidof pppd`

читать. до выпадения в нивану - авось какие-то вопросы и не возникнут.
http://linux.by/wiki/index.php/FAQ_Net
 
H

Hetman

Гость
#5
в том то и прикол что не получатеся забить последовательность команд в скрипт. ну ну хочет он из скрипта запускаться! а вот в терминале запускается.
я попробую
 
Статус
Закрыто для дальнейших ответов.