Т е от вас хотят, чтобы вы переписали 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 Так что это за место, где преподают такие предметы? Интересно даже…