0 / 0 / 0
Регистрация: 30.03.2014
Сообщений: 53
|
|
1 | |
Управление соединениями VPN IPSEC19.06.2014, 14:09. Показов 993. Ответов 10
Метки нет (Все метки)
Всем привет! У меня проблемка, делаю все по книге Крорниенко 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 нашей сети, затем командой 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
|
19.06.2014, 14:09 | |
Ответы с готовыми решениями:
10
Управление соединениями с БД Site to Site IPSec VPN CISCO891-K9 & Cisco RV120W Wireless-N VPN Firewall Управление модемными соединениями из гостевой учетки ipsec VPN |
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 # Код
Отличия в синтаксисе оболочек весьма существенны. Оболочки, произошедшие от Bourne shell, чаще используются для программирования, т.к. язык c-shell далёк от совершенства(хотя я бы не сказал, что tcsh многим уступает в возможностях программирования bash, но исторически csh обладал кучей огрехов, поэтому сейчас более распространён синтаксис Bourne shell).
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
|
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/ или грузить при старте системы - вообще класс.
на одном форуме мега умные люди, например, ответили так: Код
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
|
1362 / 1074 / 110
Регистрация: 16.03.2012
Сообщений: 4,543
|
|
19.06.2014, 17:24 | 11 |
Ровно год полностью проштудировал книгу Корниенко, всё должно быть без проблем. К слову он мне лично две книги подарил.
0
|
19.06.2014, 17:24 | |
19.06.2014, 17:24 | |
Помогаю со студенческими работами здесь
11
Mikrotik ipsec vpn Как настроить IPSec VPN Настройка VPN IPsec Tunnel Не работает третий vpn канал (по ipsec) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Блоги программистов | |||||
Как перейти с 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.by
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
Боты для Телеграм представляют собой автоматизированные программы, которые выполняют различные задачи, взаимодействуя с пользователями через интерфейс мессенджера. В данной статье мы рассмотрим,. . .
|