Форум сайта python.su
0
Спасибо, приятно когда на вопросы отвечают.
Отредактировано (Ноя. 24, 2010 16:12:02)
Офлайн
1
Про знаки препинания не забывайте.
Офлайн
0
Господа, день добрый!
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку:).
Офлайн
0
yuvbssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку
Офлайн
0
Alex2ndr
Спасибо за ответ. Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.
Офлайн
14
вы оба на одну и ту же работу устраиваетесь?
Офлайн
0
yuvbгхм… могу предложить еще вот это:
Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.
python -c "import os; os.system('ssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>')"Офлайн
0
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))
os.system("/sbin/iptunnel add tun%d mode ipip remote %s local %s" % (self.local_tun,self.remote_host,self.local_host))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)
Офлайн
14
Эти изуверы просят вас продемонстрировать, что вы умеете сделать примитивный прокси?
При этом на знании шифрования на настаивают?
Нечеловеческая жестокость!!!
Офлайн
0
Т е от вас хотят, чтобы вы переписали iptunnel на питоне? Забавно… Я бы не назвал это прокси, это скорее организация туннеля средствами модулей ОС.
ArtemPonomarenkoЧто то мне знакомое в этом видится. В исходниках ядра(в /usr/src/linux/Documentation/networking/tuntap.txt) есть пример программы на С, которая как раз производит инициализацию туннеля. Приведу ее тут:
точнее создать интерфейс tun не через iptunnel а написать свой
что то типа такого
#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;
}
Офлайн