Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Network
  • » написать модуль для поднятия впн-туннеля [RSS Feed]

#1 Ноя. 24, 2010 14:14:08

ArtemPonomarenko
От:
Зарегистрирован: 2010-11-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Спасибо, приятно когда на вопросы отвечают.



Отредактировано (Ноя. 24, 2010 16:12:02)

Офлайн

#2 Ноя. 24, 2010 16:10:20

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Про знаки препинания не забывайте.

Офлайн

#3 Дек. 13, 2010 11:49:05

yuvb
От:
Зарегистрирован: 2010-12-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Господа, день добрый!
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку:).



Офлайн

#4 Дек. 13, 2010 13:51:01

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

yuvb
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку
ssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>
Не оно?
И каким боком тут питон?



Офлайн

#5 Дек. 14, 2010 13:24:49

yuvb
От:
Зарегистрирован: 2010-12-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Alex2ndr
Спасибо за ответ. Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.



Офлайн

#6 Дек. 14, 2010 14:10:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

написать модуль для поднятия впн-туннеля

вы оба на одну и ту же работу устраиваетесь?



Офлайн

#7 Дек. 14, 2010 15:03:18

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

yuvb
Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.
гхм… могу предложить еще вот это:
python -c "import os; os.system('ssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>')"
Давайте ка подробнее про задачу и предполагаемые(кем-то) пути решения. И объясните где такое требуется. Если это какой-то ВУЗ и это только примера ради, то одно, а если это предлагают в мейнстрим засунуть, то другое.



Офлайн

#8 Дек. 14, 2010 18:21:28

ArtemPonomarenko
От:
Зарегистрирован: 2010-11-17
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Alex2ndr
Давайте ка подробнее про задачу и предполагаемые(кем-то) пути решения. И объясните где такое требуется. Если это какой-то ВУЗ и это только примера ради, то одно, а если это предлагают в мейнстрим засунуть, то другое.
моя тема активировалась :)

вот вариант решения, но он не подходит
cmd = "ssh -f -w %(local_tun)s:%(remote_tun)s %(remote_host)s 'iptunnel add tun%(remote_tun)d \
mode ipip remote %(local_host)s local %(remote_host)s; \
ifconfig tun%(remote_tun)d %(remote_ip)s netmask %(netmask)s pointopoint %(local_ip)s'" % self.__dict__
self.ssh_proc = subprocess.Popen(shlex.split(cmd),stdin=sys.stdin,stdout=sys.stdout)
self.ssh_proc.wait()
time.sleep(5)
#
os.system("/sbin/iptunnel add tun%d mode ipip remote %s local %s" % (self.local_tun,self.remote_host,self.local_host))
os.system("/sbin/ifconfig tun0 %s netmask %s pointopoint %s" % \
(self.local_ip,self.netmask,self.remote_ip))
а именно вот этa часть, ее нужно реализовать с помошью python
os.system("/sbin/iptunnel add tun%d mode ipip remote %s local %s" % (self.local_tun,self.remote_host,self.local_host))
точнее создать интерфейс tun не через iptunnel а написать свой
что то типа такого

TUNSETIFF   = 0x400454ca
IFF_TUN = 0x0001

class Link:
def __init__(self,interfaceName):
self.netDeviceFD = os.open("/dev/net/tun", os.O_RDWR)
ifs = ioctl(self.netDeviceFD, TUNSETIFF, struct.pack("16sH", interfaceName, IFF_TUN))
print "Using interface %s" % ifs[:16].strip("\x00")
...
packet = os.read(self.netDeviceFD,1500)



Отредактировано (Дек. 14, 2010 18:22:59)

Офлайн

#9 Дек. 14, 2010 18:42:17

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

написать модуль для поднятия впн-туннеля

Эти изуверы просят вас продемонстрировать, что вы умеете сделать примитивный прокси?
При этом на знании шифрования на настаивают?
Нечеловеческая жестокость!!!



Офлайн

#10 Дек. 14, 2010 22:08:12

Alex2ndr
От:
Зарегистрирован: 2009-12-26
Сообщения: 204
Репутация: +  0  -
Профиль   Отправить e-mail  

написать модуль для поднятия впн-туннеля

Т е от вас хотят, чтобы вы переписали iptunnel на питоне? Забавно… Я бы не назвал это прокси, это скорее организация туннеля средствами модулей ОС.

ArtemPonomarenko
точнее создать интерфейс tun не через iptunnel а написать свой
что то типа такого
Что то мне знакомое в этом видится. В исходниках ядра(в /usr/src/linux/Documentation/networking/tuntap.txt) есть пример программы на С, которая как раз производит инициализацию туннеля. Приведу ее тут:
#include <linux/if.h>
#include <linux/if_tun.h>

int tun_alloc(char *dev)
{
struct ifreq ifr;
int fd, err;

if( (fd = open("/dev/net/tun", O_RDWR)) < 0 )
return tun_alloc_old(dev);

memset(&ifr, 0, sizeof(ifr));

/* Flags: IFF_TUN - TUN device (no Ethernet headers)
* IFF_TAP - TAP device
*
* IFF_NO_PI - Do not provide packet information
*/
ifr.ifr_flags = IFF_TUN;
if( *dev )
strncpy(ifr.ifr_name, dev, IFNAMSIZ);

if( (err = ioctl(fd, TUNSETIFF, (void *) &ifr)) < 0 ){
close(fd);
return err;
}
strcpy(dev, ifr.ifr_name);
return fd;
}
собственно если отбосить все фокусы про выделение памяти, то на питоне наверно можно обойтись одной строкой про открытие файла /dev/net/tun в нужном режиме. Дальнейшие действия надо смотреть в документации к модулю tun как таковому, где описывается как именно устанавливается соединение клиент-сервер… Не знаю найдутся ли на этом форуме знатоки того, что делать дальше, но в любом случае к питону это пока имеет слабое отношение. Сложность не в питоне, а в том что делать.

PS Так что это за место, где преподают такие предметы? Интересно даже…



Офлайн

  • Начало
  • » Network
  • » написать модуль для поднятия впн-туннеля[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version