The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Управление соединениями VPN IPSEC"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Управление соединениями VPN IPSEC"  +/
Сообщение от driveer1 email(ok) on 19-Июн-14, 14:38 
Всем привет! У меня проблемка, делаю все по книге Крорниенко 2013 года.
Хочу чтобы интерфейсы поднимались сами:

Напишем скрипт, который будет читать настройки из
текстового файла и поднимать наши туннельные соединения по
требованию. Для начала, создадим файл с настройками

# vi /home/raph/scrpts/vpn.conf
66.66.66.66:192.168.0:1
77.77.77.77:10.77.77:10
88.88.88.88:10.0.88:100

То есть, мы находимся в центральном офисе. Удаленный
офис №1 имеет внешний IP-адрес 66.66.66.66, внутреннюю
локальную сеть 192.168.0.0/24 и шлюз 192.168.0.1;
удаленный офис №2 – внешний IP 77.77.77.77, локальная сеть
10.77.77.0/24 и шлюз 10.77.77.10; удаленный офис №3 –
внешний IP 88.88.88.88, локальная сеть 10.0.88.0/24 и
шлюз 10.0.88.100. Теперь напишем сам скрипт:

# vi /home/raph/scrpts/vpn.sh
#!/bin/sh
# присваиваем начальное значение счетчику
i=0
# создаем переменные с параметрами нашей сети
# o=наш, e=внеш, i=внутр, n=сеть, a=адрес.
oea="22.22.22.22"
oin="10.0.0"
oia="1"
# сохраняем данные об уже построенных туннелях
ifconfig | grep tunnel | cut -f5  –d' '  > /tmp/ifcfg.txt
# начинаем читать конфигурационный файл
exec < $1
# начинаем перебирать строки конфигурационного файла
while read str
do
# создаем переменные с параметрами удаленной сети
# r=удален, e=внеш, i=внутр, n=сеть, a=адрес.
rea=`echo $str | cut –f1 -d':'`
rin=`echo $str | cut –f2 -d':'`
ria=`echo $str | cut –f3 -d':'`
# ищем эту сеть в уже построенных туннелях
s1=`grep $rea /tmp/ifcfg.txt`
# номер правила для фаерволла (3010, 3020..)
nn=`expr $i \* 10 + 3000`
# проверяем значение второго параметра
if [ $2 –eq "up" ]
then
#  если up, то проверяем не поднят ли уже этот туннель
if [ -z $s1 ]
then
# если не поднят, то поднимаем gif, route, ipfw
ifconfig gif$i create
ifconfig gif$i tunnel $oea $rea
ifconfig gif$i inet $oin.$oia $rin.$ria netmask 255.255.255.0
route add $rin.0/24 $rin.$ria
ipfw add $nn allow ip from any to any via gif$i
fi
# проверяем значение второго параметра еще раз
elif [ $2 –eq "down" ]
then
# если down, то удаляем gif, route, ipfw
ifconfig gif$i destroy
route delete $rin.0/24 $rin.$ria
ipfw delete $nn
else
# если не up и не down, просим уточнить действие
echo 'Use "up" or "down" parameter...'
fi
i=`expr $i + 1`
done
rm /tmp/ifcfg.txt
# завершаем выполнение программы
exit 0

Далее,
# chmod ugo+x /home/raph/scrpts/vpn.sh
# /home/raph/scrpts/vpn.sh /home/raph/scrpts/vpn.conf up

При этом, в начале мы определяем счетчик i и параметры
нашей сети, затем командой ifconfig проверяем какие туннели
у нас уже построены и сохраняем эту информацию в текстовый
файл. Далее начинаем считывать построчно из нашего vpn.conf
параметры удаленных сетей. Если вторым параметром скрипта
идет слово up, то мы проверяем, не построен ли уже этот туннель
– если нет, то строим. Если же вторым параметром идет слово
down, то мы уничтожаем текущий интерфейс и все его настройки.

Когда запускаю, выходит ошибка:
[: up: bad number
[: up: bad number
Use "up" or "down" parametr...
[: up: bad number
[: up: bad number
Use "up" or "down" parametr...
[: up: bad number
[: up: bad number
Use "up" or "down" parametr...
[: up: bad number
[: up: bad number

Выручайте ребята

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Управление соединениями VPN IPSEC"  +/
Сообщение от Психиатр (ok) on 19-Июн-14, 15:20 
Да откройте для себя величайший из ключей для отладки скриптов (в книге про это не написано???)

-x

sh -x scriptname.sh
bash -x scriptname.sh

с этим ключём будет видно где косяк.

разбирать этот велосипед лень,
вместо кранчбанга #!/bin/sh попробуйте #!/bin/bash

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Управление соединениями VPN IPSEC"  +/
Сообщение от driveer1 email(ok) on 19-Июн-14, 15:46 
Решил проблему заменой eq на =


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру