Jump to content

wolowizard

Forum Members
  • Posts

    8
  • Joined

  • Last visited

Equipment

  • Keenetic
    Giga II, GIGA

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

wolowizard's Achievements

Newbie

Newbie (1/5)

3

Reputation

  1. Тут уже поднимали вопрос организации систем "умного дома" на роутере - предлагаю очередную вариацию. К роутеру по USB подключается плата Arduino Nano, к которой в свою очередь подключены модули управления нагрузкой и приемник. В качестве датчиков используются китайские беспроводные датчики от метеостанций. Датчики опрашиваются каждые 10 минут, и в зависимости от времени суток и температуры в комнатах формируется сигнал на включение/выключение привода радиаторов отопления. Бонусом показания датчиков температуры и давления пишутся в базу данных, потом можно смотреть статистику. Управление системой через веб-интерфейс. Система очень неплохо себя показала в эксплуатации - после перевода дома на оплату по счетчикам средний счет за отопление уменьшился в два раза. Исходники и руководство по установке лежат здесь: https://github.com/ezaykin/modsensor
  2. Здравствуйте! Пытаюсь собрать свой пакет, который будет использовать входящую в состав Entware библиотеку libmodbus. Успешно установил тулчейн, собрал и запустил "Helloworld" отсюда: https://github.com/zyxmon/zyxel-keenetic-packages/tree/master/package/built/helloworld Далее пытаюсь запустить свой пакет modsensor, который будет использовать функционал библиотеки libmodbus. Программа собирается, но на роутере не работает, выдавая ошибку /opt/bin/sh: modsensor: not found Ошибка возникает, когда я пытаюсь слинковать исполняемый файл с библиотекой libmodbus. Функции библиотеки пока что даже не используются. Библиотека на роутере установлена, сам файл тоже есть в наличии: root@Keenetic_Giga:/opt/bin# file modsensor modsensor: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld.so.1, for GNU/Linux 3.2.0, stripped strace выдает следующее: root@Keenetic_Giga:/opt/bin# strace modsensor execve("/opt/bin/modsensor", ["modsensor"], 0x7fe7bda0 /* 20 vars */) = -1 ENOENT (No such file or directory) fstat64(2, {st_mode=S_IFCHR|0600, st_rdev=makedev(136, 1), ...}) = 0 write(2, "strace: exec: No such file or di"..., 40strace: exec: No such file or directory ) = 40 getpid() = 6013 exit_group(1) = ? +++ exited with 1 +++ вывод ldd: root@Keenetic_Giga:/opt/bin# ldd modsensor libmodbus.so.5 => /opt/lib/libmodbus.so.5 (0x77b76000) libgcc_s.so.1 => /opt/lib/libgcc_s.so.1 (0x77b50000) libc.so.6 => /opt/lib/libc.so.6 (0x779c2000) /lib/ld.so.1 => /opt/lib/ld.so.1 (0x77b8f000) Вроде как и файл есть, и ссылки на библиотеки верные, однако программа не работает. Подозреваю, что ошибка может быть в Makefile. Makefile для исполняемого файла: LIBS=-lmodbus modsensor: modsensor.o $(CC) $(LDFLAGS) $(LIBS) modsensor.o -o modsensor modsensor.o: modsensor.c $(CC) $(CFLAGS) -c modsensor.c clean: rm *.o modsensor Makefile для пакета: include $(TOPDIR)/rules.mk PKG_NAME:=modsensor PKG_VERSION:=1.0.0 PKG_RELEASE:=1 TARGET_CFLAGS=-I$(STAGING_DIR)/opt/include/modbus TARGET_LDFLAGS=-L$(STAGING_DIR)/opt/lib PKG_BUILD_DEPENDS:=libmodbus PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION) include $(INCLUDE_DIR)/package.mk define Package/$(PKG_NAME) SECTION:=utils CATEGORY:=Utilities DEPENDS:=+libmodbus TITLE:=$(PKG_NAME) MAINTAINER:=SuperExpert endef define Package/$(PKG_NAME)/description reading sensor`s values from modbus device. endef define Build/Compile $(MAKE) -C $(PKG_BUILD_DIR) \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ $(TARGET_CONFIGURE_OPTS) endef CONFIGURE_VARS+=\ CC="$(TOOLCHAIN_DIR)/bin/$(TARGET_CC)" define Package/$(PKG_NAME)/install $(INSTALL_DIR) $(1)/opt/bin $(CP) $(PKG_BUILD_DIR)/$(PKG_NAME) $(1)/opt/bin endef $(eval $(call BuildPackage,$(PKG_NAME))) Если убрать линковку с libmodbus, то программа работает. Помогите составить Makefile с линковкой библиотеки. Возможно, если библиотеку включить непосредственно в программу то все заработает, но хотелось бы разобраться как сделать правильно.
  3. Задуманное получилось реализовать, используя стандартный PPTP сервер. Хотелось бы увидеть комментарии разработчиков, чем отличается маршрутизация трафика клиентов в PPTP сервере и IPsec VPN.
  4. Интересно. Не могу себя назвать большим специалистом по iptables, но разве в этом случае не будет работать правило iptables -t nat -A OUTPUT -p tcp -m multiport --dports 80,443 -m set --match-set rublock dst -j REDIRECT --to-ports 9040 которое перенаправляет в Тор внутренний трафик роутера? Видел, что в iptables еще появляется цепочка _NDM_IPSEC_POSTROUTING_NAT при подключении VPN клиента, однако как это использовать пока не сообразил. Подскажите, пожалуйста, как. Или данная задача вообще не решается средствами iptables и нужно создавать собственную таблицу маршрутизации?
  5. Спасибо за ответ А обязательно создавать таблицу маршрутизации для маркированных пакетов? Сейчас выборочный роутинг осуществляется средствами iptables. В netfilter.d добавлен файл с правилами: #!/bin/sh [ "$table" != "nat" ] && exit 0 iptables -t nat -A PREROUTING -p tcp -m multiport --dports 80,443 -m set --match-set rublock dst -j REDIRECT --to-ports 9040 iptables -t nat -A OUTPUT -p tcp -m multiport --dports 80,443 -m set --match-set rublock dst -j REDIRECT --to-ports 9040 iptables -t nat -A PREROUTING -p tcp -d 10.192.0.0/8 -j REDIRECT --to-port 9040 iptables -t nat -A OUTPUT -p tcp -d 10.192.0.0/8 -j REDIRECT --to-port 9040 Все, что есть в ipset уходит через порт 9040 в Тор, onion-ресурсы транслируются в подсеть 10.192.0.0/8 и тоже уходят в Тор. Повторюсь, выборочный роутинг отлично работает для локальных клиентов, однако не работает для клиентов VPN. Получается, трафик от клиентов VPN маршрутизируется как-то иначе по сравнению с трафиком локальных клиентов. Как происходит маршрутизация для клиентов VPN?
  6. Здравствуйте! Подскажите, как происходит взаимодействие между IPsec VPN и компонентами Entware. Имеется следующая ситуация: роутер Keneetic Giga 2 с прошивкой 2.09, на котором поднят Тор и dnsmasq. На роутере средствами ipset трафик на заблокированные ресурсы и .onion-сайты заворачивается через Тор, все отлично работает для всех клиентов роутера, проводных и беспроводных. Возникла идея включить на роутере IPsec VPN, чтобы можно было подключаться с Android-телефона через мобильный интернет, рабочий вайфай и т.п. и иметь отовсюду доступ к заблокированным ресурсам и onion-сайту Флибусты. После включения IPsec VPN и настройки подключения на Андроиде (разрешен NAT, в качестве DNS-сервера указан роутер) трафик с телефона идет через роутер (сайты определяют внешний IP роутера), однако доступа к заблокированным ресурсам и onion-ресурсам нет. Думал, что возможно на телефоне не сбрасывается DNS-кэш, однако по IP-адресу заблокированные сайты тоже не открываются. Подозреваю, что трафик с VPN-клиентов может идти сразу через внешнее подключение, минуя правила маршрутизации для заблокированных ресурсов. Подскажите, как можно реализовать задуманное - чтобы VPN-клиенты могли использовать настроенный на роутере обход блокировок.
×
×
  • Create New...