Na hotplugu jak wstanie sieć komórkowa - jak to ogarnąć, to trochę skrót myślowy
. Myślałem, żeby na początku skryptu w pętli odpytywać metodę diagnostyczną API zanim nie pokaże się 200 i dopiero potem puścić go dalej.
Nie jesteś zalogowany. Proszę się zalogować lub zarejestrować.
eko.one.pl → Posty przez krzysztof.kalukin
Na hotplugu jak wstanie sieć komórkowa - jak to ogarnąć, to trochę skrót myślowy
. Myślałem, żeby na początku skryptu w pętli odpytywać metodę diagnostyczną API zanim nie pokaże się 200 i dopiero potem puścić go dalej.
Mam wszystko ustawione - to mi ogarnia opkg przy instalacji pakietu. Natomiast chyba już wiem jaka może być przyczyna - mój serwis startuje jako S80, natomiast serwis cellular jako S99, więc później, zatem skrypty jak zauważyłeś nie mają prawa się wykonać, bo muszą pobrać klucze z serwisu w sieci zewnętrznej. Zamieniłem miejscami usługi, dołożyłem logowanie i wiem już gdzie leży problem. Skrypty próbują sięgać do sieci, natomiast interfejs GSMowy potrzebuje chwili, aby wstać, a w międzyczasie skrypty kończą prace bez żadnych efektów. Czy jest jakiś sposób jak to w miarę elegancko rozwiązać?
Hejka,
Mam usługę zdefiniowaną w /etc/init.d/
#!/bin/sh /etc/rc.common
START=80
USE_PROCD=1
start_service() {
/usr/bin/check1.sh
/usr/bin/check2.sh prd
/usr/bin/get_auth_code1.sh
/usr/bin/get_auth_code2.sh
/usr/bin/get_creds.sh
procd_open_instance
procd_set_param command /usr/bin/serwisd
procd_set_param respawn
procd_close_instance
}Wywołując /etc/init.d/serwisd start albo restart wszystko idzie jak trzeba - wszystkie skrypty się uruchamiają przed startem usługi, natomiast przy starcie samego systemu uruchamia się sama usługa, a skrypty już nie. Podejrzewam, że coś zrobiłem źle w definicji usługi, ale nie mam specjalnie pomysłu co...
Jakieś sugestie może? Dzięki z góry
K
A może lepiej wyłuskać binarki z tych pakietów składowych w odpowiednich wersjach i wrzucić je do MakeFile jako normalne pliki kierowane do /usr/bin czy gdzietamkolwiek będę chciał...
Hej,
Mam taką kwestię - moje rozwiązanie jest w tej chwili rozczłonkowane na siedem pakietów opkg (parę aplikacji C/C++ oraz jakaś skryptologia i apka webowa). Chciałbym to wszystko zgrupować w ramach jednego pakietu, którym zainstaluję całe rozwiązanie. Rzecz z pozoru łatwa - definiuje pakiet bez żadnej zawartości, tylko z określonymi pakietami składowymi jako zależne. Rzecz w tym, że oprócz wygody użytkowania ja bym chciał kontrolować wersje pakietów składowych instalowanych na urządzeniu. Przykładowo jeżeli mam mój pakiet grupujący w wersji 1.0, który zależy od dwóch pakietów także w wersji 1.0, to nie chciałbym, żeby dało się upgrejdować pakiety składowe, nawet jak się pojawią w repozytorium opkg. Chciałbym więc wskazać konkretną wersję pakietu w definicji pakietu grupującego, a użytkownik mógłby podnosić wersję czegokolwiek wchodzącego w skład tegoż pakietu tylko poprzez jego upgrade. Czy taka możliwość istnieje w ramach opkg?
Hejka,
Problemu nie da się chyba ogarnąć przez redirect portów. To się udaje w bardzo ograniczonym zakresie ogarnąć tylko w momencie jak host ma ustawiony adres bramy na urządzenie OpenWrt, a taka konfiguracja nie jest możliwa - urządzenie będzie pracować w ramach jakiejś sieci firmowej i nie może być gatewayem.
Czy jest możliwość, aby uruchomić usługę FTP proxy na OpenWrt?
na linuxie też działa...
port 20 przekierowałem, ale bez zmian. Przełączenie w tryb passive skutkuje tylko tym, że klient ciut dłużej myślał, z błędem 503 Bad sequence of commands.
walki ciąg dalszy. ustawiłem przekierowanie w taki sposób:
firewall.@redirect[2]=redirect
firewall.@redirect[2].dest='lan'
firewall.@redirect[2].target='DNAT'
firewall.@redirect[2].name='FTP'
firewall.@redirect[2].src_dport='21'
firewall.@redirect[2].dest_port='21'
firewall.@redirect[2].src='service_zone'
firewall.@redirect[2].dest_ip='192.168.1.111'
Efekt jest taki, że redirect działa na MacOS, natomiast pod Windowsem jest taka sekwencja przy próbie połączenia:
230 User logged in, proceed
ftp> dir
530 Could not create socket!
503 Bad sequence of commands
no właśnie nie. z mojego laptopa 1.120 do 1.111 - FTP działa. z urządzenia OpenWrt 1.114 do 1.111 - działa, z 1.120 do 1.111 poprzez 1.114 - nie działa. w takiej samej konfiguracji (1.120->1.111 przez 1.114), ale WWW - działa.
Hejka,
Zrobiłem redirect portu w ten sposób:
firewall.@redirect[2]=redirect
firewall.@redirect[2].dest='lan'
firewall.@redirect[2].target='DNAT'
firewall.@redirect[2].name='FTP redir'
firewall.@redirect[2].src='service_zone'
firewall.@redirect[2].dest_ip='192.168.1.111'
firewall.@redirect[2].proto='all'
próba zalogowania się prosto na 192.168.1.111 - ok, poprzez 192.168.1.114 komunikat na kliencie lftp - connection refused. Inne porty, które przekierowuję na ten host działają bez problemu - 8433, 8080, 502.
Czary jakieś?
KK
option metric 10
Na najważniejszym interfejsie. A na pozostałych większe liczby: 20, 30 i 40.
w gałęzi interfejsu sieciowego? network.lan.metric?
Hej,
Jak w temacie. Mam trzy (a właściwie cztery) interfejsy sieciowe z dostępem do sieci wewnętrznej - LAN, WLAN i WAN przez GSM. Chodzi mi o to, że w przypadku kiedy wszystkie interfejsy są aktywne i podłączone, urządzenie korzystało właśnie z takiej kolejności - najpierw LAN po kablu, potem WLAN po Wi-Fi, a na końcu jak już nie ma połączenia przez żadne z łącz, to po GSMie. Jak to ustawić przez UCI?
K
Podniosłem wersję pakietu i zadziałało
hej,
Mam pakiet z wprowadzoną zależnością pod DEPENDS. W międzyczasie producent urządzenia dołączył ten pakiet zależny do bazowego systemu i próbując go zainstalować opkg wywalał błąd, że nie może zainstalować pakietu zależnego z uwagi na to, że się znajduje w systemie bazowym. Prosta sprawa - usunąłem tę zależność w Makefile i zsynchronizowałem repozytoria. Niestety cały czas nie daje się zainstalować z tego samego powodu. Prawdopodobnie gdzieś ta zależność się skeszowała. Co robić?
Kal
Hej,
Mam pakiecik, który ma za zadanie dodać repozytorium pakietów - wgrać cały plik /etc/opkg/customfeeds.conf a następnie zainstalować trzy pakiety z tego repozytorium. Próbowałem to zrobić wpisując w sekcji poinstalacyjnej Makefile opkg update oraz potem install, natomiast to nie poszło, bo najwyraźniej tak się nie da. Czy jest na to jakiś sposób? Myślałem, żeby dodać te pakiety w sekcji DEPENDS, ale to też raczej nie pójdzie, ponieważ najpierw trzeba synchronizować repozytoria, a instalator zaczyna od instalacji pakietów zależnych, tyle, że to nie zadziała bo nie ma dodanych repozytoriów...
Będę wdzięczny za wskazówkę.
KK
To jedna sprawa, ale druga była taka, że trzeba było ustawić maskaradę na strefie lan. teraz wszystko śmiga jak trzeba.
Ja ustawiłem w międzyczasie tak:
firewall.@zone[2]=zone
firewall.@zone[2].name='service_zone'
firewall.@zone[2].network='<eth0.2>'
firewall.@zone[2].input='ACCEPT'
firewall.@zone[2].output='ACCEPT'
firewall.@zone[2].forward='REJECT'
firewall.@rule[9]=rule
firewall.@rule[9].name='Allow_Webpage_Access'
firewall.@rule[9].src='service_zone'
firewall.@rule[9].dest='lan'
firewall.@rule[9].proto='tcp'
firewall.@rule[9].target='ACCEPT'
firewall.@rule[9].dest_port='8443'
firewall.@rule[10]=rule
firewall.@rule[10].name='Allow_Controller_Access'
firewall.@rule[10].src='service_zone'
firewall.@rule[10].dest='lan'
firewall.@rule[10].dest_ip='192.168.1.111'
firewall.@rule[10].proto='all'
firewall.@rule[10].target='ACCEPT'
Prawie działa - nie mogę nigdzie wchodzić poza www na routerze na porcie 8443. Natomiast router mnie nie dopuszcza do hostu 192.168.1.111 - connection refused.
no dobra, a możesz pomóc z tym ustawieniem firewalla. Dawno tego nie robiłem. Rozumiem że robię trzy strefy - Ogólna z dostępem do WAN oraz do urządzenia i innych hostów we własnej podsieci. Serwisowa - z dostępem do urządzenia i Produkcyjna zawierająca jeden host urządzenie. Czy da się to ustawić jakoś przez UCI? Docelowo będę musiał, ponieważ to będzie musiało się konfigurować skryptem na wielu urządzeniach.
Tablice routingu służą do kierowania pakietów na określone interfejsy, ale nie służą do ograniczenia ruchu dla jednego hosta i zablokowania czegoś innego.
No tak, ale jeżeli jedyną ścieżką z danego interfejsu będzie pojedynczy host na drugim, to chyba cały inny ruch nie będzie możliwy i wtedy nie ma co filtrować, czy się mylę?
A nie mogę tego zrobić zwykłą tablicą routingu? Muszę na firewallu to robić?
firewall.@defaults[0]=defaults
firewall.@defaults[0].syn_flood='1'
firewall.@defaults[0].input='ACCEPT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].forward='REJECT'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].input='REJECT'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].forward='REJECT'
firewall.@zone[1].masq='1'
firewall.@zone[1].mtu_fix='1'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
Jest OK - tylko adresy pomyliłem.
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.globals.ula_prefix='fd59:f51f:c834::/48'
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0.1'
network.@device[1]=device
network.@device[1].name='eth0.1'
network.@device[1].macaddr='a8:80:38:39:cb:f1'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.ipaddr='192.168.1.113'
network.lan.gateway='192.168.1.1'
network.wwan=interface
network.wwan.proto='ncm'
network.wwan.auto='0'
network.wwan.device='/dev/ttyUSB1'
network.@device[2]=device
network.@device[2].name='eth0.2'
network.@device[2].macaddr='a8:80:38:39:cb:f2'
network.@switch[0]=switch
network.@switch[0].name='switch0'
network.@switch[0].reset='1'
network.@switch[0].enable_vlan='1'
network.@switch_vlan[0]=switch_vlan
network.@switch_vlan[0].device='switch0'
network.@switch_vlan[0].vlan='1'
network.@switch_vlan[0].ports='4 6t'
network.@switch_vlan[1]=switch_vlan
network.@switch_vlan[1].device='switch0'
network.@switch_vlan[1].vlan='2'
network.@switch_vlan[1].ports='0 6t'
network.Service=interface
network.Service.proto='static'
network.Service.device='eth0.2'
network.Service.netmask='255.255.255.0'
network.Service.ipaddr='10.47.0.24'
Hej,
Czy ktoś mógłby mi pomóc w takiej kwestii - mam dwa interfejsy - jeden jest produkcyjny, a drugi serwisowy, oprócz tego jest interfejs WAN do komunikacji ze światem. Produkcyjny jest z sieci powiedzmy 10.47.1.0 i sam interfejs ma adres 10.47.1.100 i łączy się z urządzeniem 10.47.1.111. Drugi interfejs sieciowy jest do serwisowania urządzenia podpiętego pod router i może on mieć dowolny adres - załóżmy że aktualnie 192.168.20.1. Chodzi mi o taką konfigurację, w której osoba, która się podepnie kablem pod ten interfejs miała tylko i wyłącznie routing do urządzenia pod adresem 10.47.1.111 - nigdzie indziej, ani do WANu, ani gdziekolwiek w sieci lokalnej, którą router obsługuje. Wiem, że w OpenWrt te interfejsy są zrobione na VLANach, poza tym jest UCI i chciałbym się upewnić w jaki sposób można to zrealizować. Czy zwykłe polecenie route add jest w tym przypadku OK?
Kal
Hej,
Mam do zrealizowania taki temat. Mam urządzenie, które posiada dwa interfejsy sieciowe. Jeden interfejs ma na stałe adres 192.168.1.222 i jest podłączony do komputera w tej podsieci. Drugi jest w innej podsieci - załóżmy 10.47.0.222 i ma służyć jako port serwisowy. Jedyne połączenie jakie można wykonać to z dowolnego hosta z drugiej podsieci do hosta 192.168.1.223.
Strona WWW miałaby być pod adresem 10.47.0.222 i zawierać następującą funkcjonalność:
1. Logowanie standardowym admin/admin
2. Formularz do zmiany hasła przy pierwszym logowaniu - bez wymuszania złożoności hasła - tylko stare hasło, nowe hasło, i powtórzenie nowego hasła
3. Możliwość zmiany adresu drugiego interfejsu oraz maski podsieci.
Jak się za to zabrać? Przy większych tematach aplikacje WWW robię w Angularze. Tutaj byłby czysty HTML, ale bym musiał jeszcze uruchamiać skrypty na urządzeniu, które zmieniają hasło i ustawiają routing oraz adres IP interfejsu i nie wiem od czego zacząć.
Kal800
eko.one.pl → Posty przez krzysztof.kalukin
Forum oparte o PunBB, wspierane przez Informer Technologies, Inc