Synology-Forum.nl
Hardware ondersteuning => Netwerk algemeen => Topic gestart door: honnes op 31 augustus 2018, 09:50:37
-
Goedemorgen,
Onlangs heb ik (succesvol) via dit topic (https://www.synology-forum.nl/overige-software/nas-synology-taak-om-zonnepanelen-opbrengst-naar-pvoutput-te-uploaden/)mijn Growatt-data (omvormer van zonnepanelen) laten versturen naar zowel de servers van de leverancier als het PVOutput platform.
Daarvoor is het noodzakelijk om data dus op te vangen, en ook 1-op-1 door te sturen. Dit gebeurd met wat IP-forwarding en werkt best goed... mits IP-forwarding goed ingeschakeld is.
Ik las op diverse plekken dat dit automatisch gebeurd als je bijvoorbeeld VPN ofzo gebruikt, maar er is dus ook een handmatig trucje om dat actief te stellen. Hiervoor gebruik ik bijgevoegd script, en nu wilde ik deze als "service taak" opstarten als de NAS opstart, maar hij heeft er echt geen zin in. Handmatig uitvoeren werkt wel, kan iemand mij adviseren?
Wat details/info/opmerkingen:
- Heb eigenlijk geen ervaring met sh-scripts/linux
- Ik heb hem CHMOD naar 755
- Handmatig uitvoeren werkt prima (want dat doe ik nu, om vervolgens m'n andere script te starten die de forward regelt)
- Er wordt wat code in het script uitgevoerd die eigenlijk niet meer nodig is, want hij geeft al aan dat bijv. sommige bestanden al bestaan, maar dat is voor de rest geen probleem.
- Overal gebruik ik al volledige paden omdat ik dacht dat het path niet gevonden kon worden.
-
Wat voor commando heb je precies in je taakplanner gezet, want dit script verwacht het woord start op de commandline anders doet hij niets.
-
Ik start hem als gebruiker root, zonder andere afhankelijke taken (de andere die ik start is afhankelijk van deze), maar ojee ik zie nu wel iets wat hopelijk de fout is.
Ik startte hem als '/volume1/pvoutput/scripts/S10enable_nat.sh start start' (2x start!!!!). Mogelijk dat dát het is... maar misschien negeert hij de 2e start ook wel, kan ik dit ook testen zonder te herstarten?
nb. In dit geval staat er S10 voor omdat ik het eerst in rc.d wilde opnemen om automatisch te starten, maar dat mocht niet baten, vandaar dat ik ook 'start' had toegevoegd, want een ander stukje bootstrap die een symlink maakt naar m'n domoticz folder via mounten gaat wel goed
-
Als je dit script vaker draait dan schrijft hij iedere keer een 1 in de ip_forward file en ik weet niet of dat zo lekker werkt.
Je kunt gewoon even kijken wat er in die file staat met:
cat /proc/sys/net/ipv4/ip_forward
Als je terug naar af wilt maak je dat bestand gewoon leeg.
Ik weet niet wat dat script verder doet maar als het alleen om het aanzetten van ip forwarding gaat kunt je beter enkel dat commando in een triggered task zetten.
Dat doet je via het control panel, task scheduler, create triggered task
Kies voor boot-up en bij task setting zet je deze regel
echo 1 > /proc/sys/net/ipv4/ip_forward
En dan die regel uit het script halen
Alternatief kun je natuurlijk het hele script laten uitvoeren at bootup via die triggered task.
-
Ik ga dat even proberen of die ene regel het ook gaat doen als ik die als task ga uitvoeren.
Het script heb ik ook maar overgenomen van iemand die dus aangaf hoe je het werkend kan krijgen. WEllicht is het onderste allemaal eenmalig nodig, en volstat de echo-regel. Ik ga es kijken wat er in staat bij opnieuw opstarten, maar dat weet ik vanavond/morgen pas :-). Ik houd je op de hoogte, bedankt voor het meedenken.
-
Dat script is een snippet uit openvpn.sh
Het wordt gebruikt om ip_forward aan te zetten en het tun device te maken.
Heb je dat allemaal wel nodig?
Als het alleen om ip_forward gaat kun je ook:
net.ipv4.ip_forward = 1
in
/etc/sysctl.conf
toevoegen door
echo net.ipv4.ip_forward = 1 >> /etc.defaults/sysctl.conf
op de terminal in te geven als root.
Dat is dan permanent, of althans tot eventueel een DSM update het ongedaan maakt.
Daarvoor is dus geen script nodig...
-
Een triggered taak die bij bootup draait en de ip_forward file aanpast is handiger die wordt niet verwijdert door een update van DSM.
De ip_foward file wordt bij bootup eerst leeg gemaakt en daarna kan die triggered task er een 1 in wegschrijven.
-
Ik zal alleen de ip forward es proberen, als m'n "iptables --list" werkt, dan weet ik hoe laat het is ;-)
-
Als je voor een taak gaat wordt het:
sysctl -w net.ipv4.ip_forward=1
Dan wel elke boot uitvoeren want dat is niet permanent.
Ik zal alleen de ip forward es proberen, als m'n "iptables --list" werkt, dan weet ik hoe laat het is ;-)
Iets meer toelichten?
iptables werkt ook zonder ip_forward...in die zin heeft het niets met elkaar te maken.
-
Sorry, zo'n leek ben ik op dat gebied..... en dan ben ik al lang blij dat het script die ik gebruik werkt.
Als ik iptables --list uitvoer dan krijg ik dit te zien:
iptables v1.6.0: can't initialize iptables table `nat': table does not exist (do you need to insmod?)
Dat is voor mij 'de trigger' (even los van wat wel en niet bij elkaar hoort) om te weten dat ik weer dat script moet starten zodat mijn data doorgestuurd wordt naar een ander IP. En dat doe ik dus elke dag (tijdens het tandenpoetsen haha).
M'n casus is dus:
WiFi dongle stuurt gegevens naar NAS.
NAS maakt een TCPDump file (ofzo aan)
NAS stuurt de gegevens 1-op-1 door naar de server waar de data normaal heen gaat.
-
Je hebt dus ook de NAT tabel nodig, daarvoor moet een kernel module geladen worden.
Dan zou dit moeten werken:
# Enable IP forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Load iptables modules
for i in x_tables.ko ip_tables.ko iptable_filter.ko nf_conntrack.ko \
nf_defrag_ipv4.ko nf_conntrack_ipv4.ko nf_nat.ko \
iptable_nat.ko ipt_REDIRECT.ko xt_multiport.ko xt_tcpudp.ko \
xt_state.ko ipt_MASQUERADE.ko
do
/sbin/insmod /lib/modules/$i
done
Om regels in de NAT tabel te zien doe je:
iptables -t nat -vnL
De standaard filter tabel zie je met:
iptables -vnL
-
Zet je de Nas dan steeds uit?
Want dit script hoeft je maar een keer te draaien dan is die ip forward geset en die kernel modules toegevoegd.
Dus dat hoeft alleen maar na het booten van je Nas.
Daarom zei ik ook zet het in een triggered task die draait na elke boot.
-
Ja ik heb 's nachts m'n NAS uitstaan omdat ik het niet nodig acht. Ik heb nu het script aangepast zonder TUN, ik ga morgen nog es 1x checken hoe het nu gaat, en anders ga ik de inhoud van het script in m'n opstart-script zetten i.p.v dat ik het script zelf aanroep.
-
Ik snap niet waarom je steeds mijn suggestie om de aanroep van dat script in een triggered task te zetten negeert?
Daarna boot je een keer en kijkt met "cat /proc/sys/net/ipv4/ip_forward" of het goed gegaan is.
-
Bedoel je als taak toevoegen en dan 'Opstarten' als moment? Dat heb ik ook gedaan.
Als ik dat doe (dus gewoon de inhoud van script geplakt in het uit te voeren gedeelte) als taskopneem en laat uitvoeren bij 'Opstarten' als moment, dan is de ip_forward 1 gevuld met 1.
'ip tables -t nat -vnL' geeft dan een lege tabel weer.
'iptables --list' geeft dan aan 'iptables v1.6.0 cant initialize table filter: table does not exist (do you need to insmod)'.
Slinger ik vervolgens handmatig dat script aan door via 'taakplanner' op uitvoeren te klikken, dan toont ook dat command een lege tabel.
Als ik dan ook weer eens mijn 'growatt' script uitvoer, dan bevat 'iptables -t nat -vnL' ook de juiste waardes.
Als ik dit 'growatt' script uitvoer vóórdat ik nogmaals dat NAT enable script draai, dan krijg ik namelijk de melding 'iptables: No chain/target/match by that name'
Ik heb het script nu ingesteld om 5 minuten na de powerup van m'n NAS te starten, mogelijk dat het invloed heeft.
[update]
Als ik via een taak het script start gaat het goed ! :-). Alleen blijkt dat mijn tcpdump-script niet goed gestart wordt. Zal even in ieder geval proberen om die gewoon een minuut later te starten zodat het niet te snel elkaar op volgt. Ik laat het resultaat even weten, maar het forwarden inschakelen gaat nu goed!
[/update]
-
Ik haak even aan omdat ik bezig met met de aanschaf van zonnepanelen.
Waarom zou je iets uploaden via de NAS, terwijl je alles kunt terug zien via de app behorende bij je zonnepanelen?
-
Om het topic even af te ronden met de oplossing.
De opgegeven commando's m.b.t de 'echo 1 > ipforward' en de lus met /insmod staat nu in een .sh bestandje, en als ik deze dan via de taakplanner dagelijkst uitvoer nadat mijn NAS gestart is (dus als triggered task, en niet als 'service bij opstarten'!) gaat het goed.
Mijn capture script start ik een paar minuten daarna (direct op de minuut of erna ging niet goed).
Ik haak even aan omdat ik bezig met met de aanschaf van zonnepanelen.
Waarom zou je iets uploaden via de NAS, terwijl je alles kunt terug zien via de app behorende bij je zonnepanelen?
Ik zou denk ik dan niet dit topic gebruiken om aan te haken. Ik beschrijf hier een issue waar ik toevallig tegenaanloop bij het uitvoeren hiervan. Daarom is de titel ook zo algemeen. Als je een ander type omvormer hebt dan Growatt kan het zijn dat je PVOutput ook al kan invullen. Maar voor informatie zou ik even zoeken, in een notendop komt het erop neer dat PVOutput meer informatie (kan) verwerken van een datastream dan je app doet; Het is beter benaderbaar en verwerkbaar, zoals bijv. in een Domoticz systeem. Je kunt instellen wat je ongeveer qua vermogen verwacht (te berekenen) met een tooltje en dat kun je dan ook weer tegen elkaar wegstrepen etc. Enfin, ik zou toch even ergens gaan speuren wat de voor- en nadelen zijn :-)