Восстановление Hanstunnel На Openwrt (Вычисление Контрольной Суммы Сетевого Пакета)

Всем привет. Наверное многие здесь знают программу Ханстуннель , что позволяет поднять туннель по ICMP, а точнее по пингам.

Решил установить на свой роутер под openwrt. Собрал, запустил.

Не работает. Симптомы были просты - пакет уходит от роутера во внешнюю сеть, но не доходит до получателя, при этом в домашней локальной сети все работает. При этом тот же ганс, работающий на домашнем компьютере, подключается внешне без вопросов.

Кому интересно, как собрать пакет hans для openwrt и как заставить его работать - добро пожаловать под кат. Первый этап – сборка.

На самом веб-сайте есть хорошее описание того, как настроить среду сборки на вашем компьютере.

openwrt , а также еще в куче разных статей, поэтому эту часть оставлю за кадром.

Предположим, что у нас есть среда со встроенной цепочкой инструментов, которая может создавать стандартные пакеты openwrt. Для сборки пакета нам понадобится исходный код hanstunnel, который вы можете взять здесь , а также Makefile с описанием пакета, файл конфигурации и файл сценария инициализации.

Последние три я нашел случайно здесь в виде описаний патчей.

Возможно кто-то найдет прямые ссылки, но у меня все равно сработало.

Для сборки наших пакетов мы создаем какую-то папку, например custom, помещаем в нее папки будущих пакетов и указываем на них ссылки из package/feeds/packages. Я слегка подпилил Makefile для пакета, чтобы он собирал исходники их папки src, лежащей рядом, вот что произошло

 
 
 # Copyright (C) 2006 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
 #
 # $Id: Makefile 6008 2007-01-06 18:39:10Z nbd $
 
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=hanstunnel
 PKG_VERSION:=0.4.3
 PKG_RELEASE:=1
 
 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
 
 include $(INCLUDE_DIR)/package.mk
 
 define Package/hanstunnel
         SECTION:=net
         CATEGORY:=Network
         SUBMENU:=Firewall Tunnel
         DEPENDS:=+libstdcpp +kmod-tun
         TITLE:=Hans IP over ICMP
         URL:= http://code.gerade.org/hans/ 
 endef
 
 define Package/hanstunnel/description
         Hans makes it possible to tunnel IPv4 through ICMP echo packets,
         so you could call it a ping tunnel. This can be useful when you
         find yourself in the situation that your Internet access is
         firewalled, but pings are allowed. endef
 endef
 
 define Build/Prepare
         echo PREPARE PREPARE
         mkdir -p $(PKG_BUILD_DIR)
         cp -r .

/src/* $(PKG_BUILD_DIR)/ endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) GCC=$(TARGET_CC) GPP=$(TARGET_CXX) endef define Package/hanstunnel/install $(INSTALL_DIR) $(1)/usr/sbin $(INSTALL_BIN) $(PKG_BUILD_DIR)/hans $(1)/usr/sbin/ $(INSTALL_DIR) $(1)/etc/init.d $(INSTALL_BIN) .

/files/hans.init $(1)/etc/init.d/hans $(INSTALL_DIR) $(1)/etc/config $(INSTALL_CONF) .

/files/hans.config $(1)/etc/config/hans endef $(eval $(call BuildPackage,hanstunnel))

Заголовок сборки Makefile тоже пришлось немного подпилить Сборка Makefile
 
 #LDFLAGS += `sh osflags ld $(MODE)`
 CFLAGS += -c -g -DLINUX -DHAVE_LINUX_IF_TUN_H
 TUN_DEV_FILE = src/tun_dev_linux.c
 #GCC = gcc
 #GPP = g++
 
 .

PHONY: directories all: hans directories: build_dir build_dir:

Теги: #OpenWRT #hanstunnel #icmp #контрольная сумма #C++
Вместе с данным постом часто просматривают: