LINUX.ORG.RU

Управление соединениями VPN IPSEC


0

1

СообщениеДобавлено: Чт 19 Июн, 2014 15:14 Заголовок сообщения: Управление соединениями VPN IPSEC Добавить пользователя в список игнора Ответить с цитатой Изменить/удалить это сообщение Удалить сообщение Всем привет! У меня проблемка, делаю все по книге Крорниенко 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 
Выручайте ребята Если попробовать запустить в режиме компиляции, то везде все нормально кроме строчек где:
# sh -x /home/dima/scrpts/vpn.sh /home/dima/scrpts/vpn.conf up 
+ i=0 
+ oea=188.168.62.45 
+ oin=10.1.1 
+ oia=21 
+ grep tunnel 
+ ifconfig 
+ cut -f5 '-d ' 
+ exec 
+ read str 
+ echo 62.33.105.29:172.16.0:1 
+ cut -f1 -d: 
+ rea=62.33.105.29 
+ echo 62.33.105.29:172.16.0:1 
+ cut -f2 -d: 
+ rin=172.16.0 
+ echo 62.33.105.29:172.16.0:1 
+ cut -f3 -d: 
+ ria=1 
+ grep 62.33.105.29 /tmp/ifcfg.txt 
+ s1=62.33.105.29 
+ expr 0 '*' 10 + 3000 
+ nn=3000 
+ [ up -eq up ] 
[: up: bad number 
+ [ up -eq down ] 
[: up: bad number 
+ echo 'Use "up" or "down" parametr...' 
Use "up" or "down" parametr... 
+ expr 0 + 1 
+ i=1 
+ read str 
+ echo 77.77.77.77:10.77.77:10 
+ cut -f1 -d: 
+ rea=77.77.77.77 
+ echo 77.77.77.77:10.77.77:10 
+ cut -f2 -d: 
+ rin=10.77.77 
+ echo 77.77.77.77:10.77.77:10 
+ cut -f3 -d: 
+ ria=10 
+ grep 77.77.77.77 /tmp/ifcfg.txt 
+ s1='' 
+ expr 1 '*' 10 + 3000 
+ nn=3010 
+ [ up -eq up ] 
[: up: bad number 
+ [ up -eq down ] 
[: up: bad number 
+ echo 'Use "up" or "down" parametr...' 
Use "up" or "down" parametr... 
+ expr 1 + 1 
+ i=2 
+ read str 
+ echo 88.88.88.88:10.0.88:100 
+ cut -f1 -d: 
+ rea=88.88.88.88 
+ echo 88.88.88.88:10.0.88:100 
+ cut -f2 -d: 
+ rin=10.0.88 
+ echo 88.88.88.88:10.0.88:100 
+ cut -f3 -d: 
+ ria=100 
+ grep 88.88.88.88 /tmp/ifcfg.txt 
+ s1='' 
+ expr 2 '*' 10 + 3000 
+ nn=3020 
+ [ up -eq up ] 
[: up: bad number 
+ [ up -eq down ] 
[: up: bad number 
+ echo 'Use "up" or "down" parametr...' 
Use "up" or "down" parametr... 
+ expr 2 + 1 
+ i=3 
+ read str 
+ echo 
+ cut -f1 -d: 
+ rea='' 
+ echo 
+ cut -f2 -d: 
+ rin='' 
+ echo 
+ cut -f3 -d: 
+ ria='' 
+ grep /tmp/ifcfg.txt 
+ s1='' 
+ expr 3 '*' 10 + 3000 
+ nn=3030 
+ [ up -eq up ] 
[: up: bad number 
+ [ up -eq down ] 
[: up: bad number 
+ echo 'Use "up" or "down" parametr...' 
Use "up" or "down" parametr... 
+ expr 3 + 1 
+ i=4 
+ read str 
+ rm /tmp/ifcfg.txt 
+ exit 0 
Голова аж кругом

man test
.........
INTEGER1 -eq INTEGER2
              INTEGER1 is equal to INTEGER2
STRING1 = STRING2
              the strings are equal
imb ★★ ()

ЗДРАТВСУЙТЕ Я НАКОПИПАСТИЛ ОТКУДА-ТО БУКВ ЧТОБЫ ОНО РАБОТАЛО А ОНО НЕ РАБОТАЕТ ПОЧЕМУ!!!!??????!!!11177

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

Да вот нефиг больше делать.
Пусть Корниенко выручает.

thesis ★★★★★ ()

Решено

Решил проблему заменой eq на =

driveer1 ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.