Форум сайта python.su
Спасибо, приятно когда на вопросы отвечают.
Отредактировано (Ноя. 24, 2010 16:12:02)
Офлайн
Про знаки препинания не забывайте.
Офлайн
Господа, день добрый!
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку:).
Офлайн
yuvbssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>
Возникла похожая задача. Нужно написать скрипт, который будет подымать впн тунель с сервером (vtun через ssh). Помогите идеями новичку
Офлайн
Alex2ndr
Спасибо за ответ. Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.
Офлайн
вы оба на одну и ту же работу устраиваетесь?
Офлайн
yuvbгхм… могу предложить еще вот это:
Первая мысль была именно такая, но сказали что такое решение не устраивает. Все нужно реализовать средствами питона.
python -c "import os; os.system('ssh -f -N -L <local_port>:<host>:<host_port> <ssh_user>@<ssh_server>')"
Офлайн
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)
Офлайн
Эти изуверы просят вас продемонстрировать, что вы умеете сделать примитивный прокси?
При этом на знании шифрования на настаивают?
Нечеловеческая жестокость!!!
Офлайн
Т е от вас хотят, чтобы вы переписали 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;
}
Офлайн