Всем привет. Наверное многие здесь знают программу Ханстуннель , что позволяет поднять туннель по 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 .Заголовок сборки Makefile тоже пришлось немного подпилить Сборка Makefile/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))
#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++ .Теги: #OpenWRT #hanstunnel #icmp #контрольная сумма #C++PHONY: directories all: hans directories: build_dir build_dir:
-
Разница Между Thinkpad T410 И Thinkpad T400
19 Oct, 24 -
Блэкетт, Патрик Мейнард Стюарт
19 Oct, 24 -
Удивительная Ручка-Драйв
19 Oct, 24 -
Электронная Почта Потеряла Дефис
19 Oct, 24