С Новым годом! Форум программистов, компьютерный форум, киберфорум
FreeBSD
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
1

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

19.06.2014, 14:09. Показов 993. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! У меня проблемка, делаю все по книге Крорниенко 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
Выручайте ребята
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2014, 14:09
Ответы с готовыми решениями:

Управление соединениями с БД
Я сам не так давно начал работать с .NET, вроде пока еще чайник. Возник у меня тут один вопрос....

Site to Site IPSec VPN CISCO891-K9 & Cisco RV120W Wireless-N VPN Firewall
Добрый день. Есть роутер CISCO891-K9 на котором есть один site to site vpn туннель с таким же...

Управление модемными соединениями из гостевой учетки
Доброго времени суток уважаемые хакеры)! Как подключиться к инету изпод учетной записи Гость?...

ipsec VPN
Добрый вечер уважаемые форумчане. Возник вопрос в настройке двух удаленных роутеров 1841. Пров дал...

10
Заблокирован
19.06.2014, 14:19 2
Начнём с того, что скрипт под bash опять...
0
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
19.06.2014, 14:29  [ТС] 3
Честно признаться талантом программирования в оболочках shell (csh, tcsh) я не наделён.
Когда подключаюсь к своему серверу, то
происходит вот что:
Код
login as: dima
Using keyboard-interactive authentication.
Password for dima@gateway.blagmsc.ru:
Last login: Thu Jun 19 19:55:54 2014 from 62.33.105.29
FreeBSD 10.0-RELEASE (GATEWAY) #0: Sun Jun 15 21:34:57 VLAT 2014

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc package has been installed
   (or fetched via pkg install lang-freebsd-doc, where lang is the
   2-letter language code, e.g. en), they are also available formatted
   in /usr/local/share/doc/freebsd.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
manual page.  If you are not familiar with manual pages, type `man man'.

Edit /etc/motd to change this login announcement.

[dima@gateway ~]$ su
Password:
root@gateway:/home/dima #
Даже незнаю что ответить, вот что пишут на opennet:
Код
Отличия в синтаксисе оболочек весьма существенны.
Оболочки, произошедшие от Bourne shell, чаще используются для
программирования, т.к. язык c-shell далёк от совершенства(хотя я бы не
сказал, что tcsh многим уступает в возможностях программирования
bash, но исторически csh обладал кучей огрехов, поэтому сейчас более
распространён синтаксис Bourne shell).
Но это не решает мою проблему. Мне кажется, что проблема в каком то флаге... Какие будут мнения?
0
Заблокирован
19.06.2014, 14:31 4
Ну значит ничем не могу помочь. До изучения минимальной матчасти лезть в IPSEC нереально, а уж со своим скриптингом...
0
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
19.06.2014, 14:47  [ТС] 5
Если попробовать запустить в режиме компиляции, то везде все нормально кроме строчек где:
Код
#  если up, то проверяем не поднят ли уже этот туннель
if [ -z $s1 ]
then
То есть:
Код
 # 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
0
Заблокирован
19.06.2014, 14:54 6
Лучший ответ Сообщение было отмечено driveer1 как решение

Решение

Если ты про это - кавычки съедаются, а строки без кавычек не сравниваются, сравниваются в том же баше о чём я и пишу... Да и не eq там надо по правильному.
1
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
19.06.2014, 15:09  [ТС] 7
Хорошо, буду копать в этом направлении
0
Заблокирован
19.06.2014, 15:34 8
Лучший ответ Сообщение было отмечено driveer1 как решение

Решение

Кстати что-то меня заклинило, но строки отлично сравниваются через == вместо eq, я всегда считал что и это не работает...

А, это для баша, в sh/csh нету в bsd такого, а в линуксе sh симлинк на dash обычно который урезанный bash по сути.

Короче не пытайся это притянуть - поставь баш с портов и от него пляши если не хочешь всё переписывать.
0
0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
19.06.2014, 15:43  [ТС] 9
все спасибо - помогли. Проблема была в том что eq заменил на =. И все заработало - между прочем очень четкий скрипт, строит соединения автоматом. а если засунуть в /usr/local/etc/rc.d/ или грузить при старте системы - вообще класс.
на одном форуме мега умные люди, например, ответили так:
Сравните вывод
Код
man [ | grep = | head -1
и
Код
man [ | grep eq | head -1
А вот что получилось из этого сравнения
Код
root@gateway /usr/home/dima]# man [ | grep = | head -1
     s1   = s2      True   if the strings s1 and s2 are identical.
[root@gateway /usr/home/dima]# man [ | grep eq | head -1
     n1   -eq n2      True   if the integers   n1 and n2 are algebraically equal.
Шикарно, не так ли?
0
Заблокирован
19.06.2014, 15:45 10
[censored], ты чем читал? = ВСЕГДА выдаст true , = это присваивание, результат его всегда положительный. Сравнение - ==, если прокатило где-то одно, это значит только что тебе везёт, сам подумай кто ты после...
0
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
19.06.2014, 17:24 11
Ровно год полностью проштудировал книгу Корниенко, всё должно быть без проблем. К слову он мне лично две книги подарил.
0
19.06.2014, 17:24
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.06.2014, 17:24
Помогаю со студенческими работами здесь

Mikrotik ipsec vpn
Здравствуйте! В общем впн поднялась, что меня радует. Но не тут то было, проблема не могу...

Как настроить IPSec VPN
Добрый день ... Есть маршрутизатор Cisco, где по заверением администраторов настроен IPSec VPN...

Настройка VPN IPsec Tunnel
Добрый день форумчане! Возник вопрос как настроить соединение между локальными сетями используя...

Не работает третий vpn канал (по ipsec)
Добрый день коллеги! Не получается настроить 3 канал по ipsec, делаю все в эмуляторе cisco...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Блоги программистов
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­хро­н­н­ы­й счётчик с управляющим сигналом задержки).
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
Руководство по созданию бота для Телеграм на Python
IT_Exp 04.01.2025
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru