neustart eines dienstes ohne boot

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

neustart eines dienstes ohne boot

Beitrag von michaa7 » 04.06.2005 12:35:37

Hi,

masquerating und forwarding in mein mini-lan wird bei mir über eine datei namens ./masq mit folgendem inhalt geregelt:

Code: Alles auswählen

#!/bin/bash
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Dieses script starte ich jedesmal von hand. Das ist keine gropße mühe, da der server immer durchläuft und dies somit selten geschieht.

Nun möchte ich jedoch mich endlich mal um ein paar firewall einträge kümmern. ZUVOR möchte ich jedoch gerne wissen, wie ich beim testen am besten vorgehe. Ich meine damit, dass ich ja nicht nach jeder änderung neu booten will. Wie also stoße ich an, dass GEÄNDERTE einträge (damit meine ich hinzugefügte und geänderte iptables einträge, die ich in ./masq vornehmen will) zur ausführung kommen? Ggf. müssen ja vielleicht sogar andere damit verknüpfte dienste auch neu gestartet werden. Wie gehe ich am besten vor?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22360
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 04.06.2005 12:50:41

Packt das Script nach /etc/init.d und verlinke es in den entsprechenden Runleveln.
Zuletzt geändert von KBDCALLS am 04.06.2005 15:08:04, insgesamt 1-mal geändert.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.06.2005 13:14:36

Wenn du es in /etc/init.d packst dann muss es aber auch ein richtiges init Script sein, muss also mit den Argumenten start, stop und restart zurecht kommen (hm...muss nicht unbedingt, aber es waehr schon besser). Ein Beispiel fuer das init Script ist im Policy Manual.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 14:07:50

danke erstma...

das mit init war schon so halb klar. Das automatisiert die sache nach dem booten. ok. Und wenn alles fertig ist soll das natürlich auch so geschehen.

Aber mein frage war eigentlich: Wie teste ich ohne jedesmal neu zu booten:

Also, ich nehme änderungen in meinem script vor und speichere dies ab. Wie stoße ich nun an, dass das system die geänderten einstellungen nutzt, und nicht die veralteten (beim booten oder beim scriptstart eingelesenen) daten verwendet? Irgendwo hat doch daas system diese alten daten parat und verliert sie erst beim runterfahren. Da spring ich beim testen im dreiecke, wenn ich da jedesmal booten müßte. Das geht doch bestimmt super elegant. Is doch *nix ;-)
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
rolo
Beiträge: 2697
Registriert: 29.08.2002 12:12:25
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: hannover

Beitrag von rolo » 04.06.2005 14:11:35

> Wie teste ich ohne jedesmal neu zu booten
indem du das geänderte scipt neu startest, oder hab ich dich jetzt auch falsch verstanden?
./dein-script

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22360
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 04.06.2005 14:24:38

Wenn das script in Form eines Initsriptes schreibst, dann kann man es mit /etc/init.d/script start neu starten . Ich habe das mal für fehlende Devices gemacht um dem udev ein bischen unter die Arme zu greifen. Es ist nur die Startption belegt, da das in dem Falle ausreichte.

Hier findest du das Script Titel: Creating missing devices
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 04.06.2005 14:37:23

KBDCALLS hat geschrieben:Wenn das script in Form eines Initsriptes schreibst, dann kann man es mit /etc/init.d/script start neu starten
sein dienst läuft ja bereits d.h.

Code: Alles auswählen

/etc/init.d/<scriptname> restart
was

Code: Alles auswählen

/etc/init.d/<scriptname> stop
/etc/init.d/<scriptname> start 
äquivalent ist

Benutzeravatar
rolo
Beiträge: 2697
Registriert: 29.08.2002 12:12:25
Lizenz eigener Beiträge: neue BSD Lizenz
Wohnort: hannover

Beitrag von rolo » 04.06.2005 14:39:18

soweit ich das verstanden habe, gehts hier doch erstmal um das testen eines iptables script, oder?

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 14:59:42

atropin hat geschrieben:soweit ich das verstanden habe, gehts hier doch erstmal um das testen eines iptables script, oder?
richtig. Wobei ich jedoch das bestehende script namens ./masq erweitere.

Ich verstehe euch alle zusammen nun folgendermaßen:

Phase I:

Solange mein script lediglich von hand gestartet ist werden änderungen dadurch wirksam, dass ich das veränderte, gespeicherte script neu starte mit

Code: Alles auswählen

./masq
Phase II:

Nach dem ich (natürlich mit eurer hilfe ;-) ) alle meine probleme mit dem neuen iptabel script gelöst habe überkommt mich der dringende wunsch, dies nun zu automatisieren. Nun greifen eure tips bezüglich init usw...

Phase III:

Das script läuft nun mittels init.d jeweil beim booten und funktioniert. Dennoch ergeben sich vielleicht änderungen. Nun greift vor allem meantheshells beschreibung.
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 04.06.2005 15:50:39

ja - so könntest du das angehen - wichtig ist das du immer wenn du an deinem script etwas änderst und den kernel damit fütterst, du alle regeln die er durch die Pre Fütterung :wink: (der vorherige durchlauf) hat löscht - siehe manual iptables - wie du das script dann startest - also ob per hand

Code: Alles auswählen

./<scriptname>
oder so wie KBDCALLS oder ich gemeint haben ist egal

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 16:21:09

meandtheshell hat geschrieben:wichtig ist das du immer wenn du an deinem script etwas änderst und den kernel damit fütterst, du alle regeln die er durch die Pre Fütterung :wink: (der vorherige durchlauf) hat löscht - siehe manual iptables

... und ich dachte ich wäre schon am ziel, aber offenbar ist dies erst die von mir gesuchte antwort: Nunden, verstehe ich dich richtig, dass es NICHT genügt das geänderte script einfach neu zu starten, sondern dass in den änderungen nicht eine chain einfach gelöscht werden darf, sondern ich via diese chain als zu löschende chain definiere und diesen eintrag erst vor einem beabsichtigten neuboot lösche/auskommentieren darf ? (Wobei "chain" sozusagen ein zusammenhängender regelsatz ist? In meinem beispiel ist dies

Code: Alles auswählen

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
eine chain, richtig? Und wenn ich sie löschen wollte sähe das so aus:

Code: Alles auswählen

iptables -t nat -D POSTROUTING -o ppp0 -j MASQUERADE
( Ich muß dies alles nachfragen, weil das bei mir eben in so kleinen häppchen geht und ich beim einfach ausprobieren mich meist völlig verheddere und den/die fehler erst recht nicht finde)
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 04.06.2005 16:32:13

bevor du neue regeln setzt musst (solltest) du alles alte löschen

Code: Alles auswählen

iptables -F INPUT
This command flushes all rules from the specified chain and is equivalent to deleting each rule one by one, but is quite a bit faster. The command can be used without options, and will then delete all rules in all chains within the specified table.
alles was du wissen musst steht da
http://iptables-tutorial.frozentux.net/ ... orial.html
konkretes beispiel - achtung auch erklärung zum example code lesen
http://iptables-tutorial.frozentux.net/ ... SHIPTABLES

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

@ meandtheshell

Beitrag von michaa7 » 04.06.2005 19:13:41

hm, jetzt wollte ich mal ganz einfach anfangen und ne einfache anleitung nachvollziehn, und...kaum fängt man an, schon isses falsch (vielleicht veraltet). Habe mich an an diese http://www.adsl4linux.de/howtos/lan/chapter5.php anleiteung halten wollen, darin wir der (veraltete?) "state" parameter verwendet..und dann kommt natürlich sofort ne fehlermeldung dazu.



H ier aber erstnochmal was ich gemacht habe:

Code: Alles auswählen

#!/bin/bash

# löschen der alten einstellungen
iptables -F INPUT

# forewarding ins LAN
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# firewall
iptables -A INPUT -i $DEV_INET -m state --state NEW,INVALID -j REJECT
iptables -A FORWARD -i $DEV_INET -m state --state NEW,INVALID -j REJECT
nach ausführen kommt die meldung

Code: Alles auswählen

Bad argument `state'
Unter der hilfe (iptables -h) findet sich absolut nichts zu state, andererseits wird es jedoch auch in deinen beispiellinks verwand. Ist dies veraltet?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.06.2005 20:00:41

Bei deinen letzten beiden Regeln ist state irgendwie doppelt....schau dir die nochmal an.

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 22:06:04

blackm hat geschrieben:Bei deinen letzten beiden Regeln ist state irgendwie doppelt....schau dir die nochmal an.

by, Martin
genau so steht es in mehreren anleitungen. Und wenn ich es lösche kommt eben ne andere fehlermeldung, "unknown argument --state" oder so ähnlich...
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.06.2005 22:11:27

Stimmt, jetzt wo du es sagst....steht in meinem Firewall Script auch so drin ;-)

Dann kann es nur an deinem Kernel liegen...der scheint das Modul ipt_state nicht zu haben (bei mir ist das geladen). Du kannst ja mal deine Kernel config nach http://nopaste.debianforum.de schieben...

by, Martin
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 04.06.2005 22:13:52

blackm hat geschrieben:Bei deinen letzten beiden Regeln ist state irgendwie doppelt....schau dir die nochmal an.

by, Martin
der fehler muss wo anders liegen - das ist ok was er versucht - syntax passt - der grund für den fehler ist wo anders

edit: ok - fast zu selben zeit

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 22:38:33

ich werde heut wirklich zum elch und brauche für den minimalsten pups ne hebamme: Ich kann die kernel config nicht copy und pasten, weil ich null ahnung habe, wie ich das in die zwischenablage bekomme. Ich arbeite mit putty u nd habe da die /boot/config.xyz.386 zuerst mit nano, dann mit more geöffnet, aber ich kann immer nur den sichtbaren seitenteil mit dem cursor markieren, es scrollt aber nie komplett weiter. Wie mache ich das?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
spiffi
Beiträge: 1128
Registriert: 09.08.2003 19:02:27

Re: @ meandtheshell

Beitrag von spiffi » 04.06.2005 22:43:44

michaa7 hat geschrieben:nach ausführen kommt die meldung

Code: Alles auswählen

Bad argument `state'
Unter der hilfe (iptables -h) findet sich absolut nichts zu state, andererseits wird es jedoch auch in deinen beispiellinks verwand. Ist dies veraltet?
Der Fehlerursache ist, daß Du der Variable $DEV_INET nirgendwo einen Wert zugewiesen hast.

Damit ist

Code: Alles auswählen

iptables -A INPUT -i $DEV_INET -m state --state NEW,INVALID -j REJECT
letztendlich äquivalent zu

Code: Alles auswählen

iptables -A INPUT -i -m state --state NEW,INVALID -j REJECT
Unabhängig davon solltest Du

Code: Alles auswählen

iptables -F INPUT
durch

Code: Alles auswählen

# Alle Ketten leeren
iptables -F

# Benutzerdefinerte Ketten löschen
iptables -X

# Paketzähler und Bytezähler aller Ketten auf 0 zurücksetzen
iptables -Z
ersetzen.
No language can express every thought unambiguously, least of all this one. -- D. R. Hofstadter

Benutzeravatar
blackm
Moderator und Co-Admin
Beiträge: 5921
Registriert: 02.06.2002 15:03:17
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von blackm » 04.06.2005 22:50:52

michaa7 hat geschrieben:ich werde heut wirklich zum elch und brauche für den minimalsten pups ne hebamme: Ich kann die kernel config nicht copy und pasten, weil ich null ahnung habe, wie ich das in die zwischenablage bekomme. Ich arbeite mit putty u nd habe da die /boot/config.xyz.386 zuerst mit nano, dann mit more geöffnet, aber ich kann immer nur den sichtbaren seitenteil mit dem cursor markieren, es scrollt aber nie komplett weiter. Wie mache ich das?
https://sourceforge.net/projects/winscp/
Schöne Grüße

Martin

Neu im Forum? --> https://wiki.debianforum.de/debianforum ... tensregeln
Log- und Konfigurationsdatein? --> pastebin.php
Forum unterstützen? --> https://wiki.debianforum.de/debianforum.de/Spenden

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22360
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 04.06.2005 22:53:02

michaa7 hat geschrieben:ich werde heut wirklich zum elch und brauche für den minimalsten pups ne hebamme: Ich kann die kernel config nicht copy und pasten, weil ich null ahnung habe, wie ich das in die zwischenablage bekomme. Ich arbeite mit putty u nd habe da die /boot/config.xyz.386 zuerst mit nano, dann mit more geöffnet, aber ich kann immer nur den sichtbaren seitenteil mit dem cursor markieren, es scrollt aber nie komplett weiter. Wie mache ich das?
Die Config mit Kwrite laden

Code: Alles auswählen

 STRG  + A und  STRG + C  
Rechte Maustaste und Paste.
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 22:58:43

...und kaum macht mans richtig, schon klappts ;-)

habe "$DEV_INET" durch "ppp0" ersetzt und schon klappet. Auch die anregung zu "flush" habe ich übernommen. Das script sieht jetzt so aus:

Code: Alles auswählen

#!/bin/bash

# löschen der alten einstellungen
# iptables -F INPUT

# Alle Ketten leeren
iptables -F

# Benutzerdefinerte Ketten löschen
iptables -X

# Paketzähler und Bytezähler aller Ketten auf 0 zurücksetzen
iptables -Z

# forewarding ins LAN
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

# firewall
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j REJECT
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j REJECT
Ok erstmal?

nach dem start keine fehlermeldungen mehr.. ok, das war schonmal ein schritt weiter. Danke!

Auch wenn es nicht unmittelbar mit dem thread zu tun hat: Wie bekomme ioch etwas in die zwiscdhenablage, das länger als der bildschirm ist?
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22360
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von KBDCALLS » 04.06.2005 23:01:31

Siehe einen Post über deinem Posting @michaa7
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 23:05:10

KBDCALLS hat geschrieben:
Die Config mit Kwrite laden

Code: Alles auswählen

 STRG  + A und  STRG + C  
Rechte Maustaste und Paste.

...wenn du jetzt sagt, dass kwrite als standarteditor taugt installier ich das paket sofort (ist nämlich auf meinem rudimentärsystem ohne X niccht drauf. Bislan habe ich halt immer nano genommen. Ichj brauch eben etwas möglichst einfaches, und sehr komplexe dinge werde ich wohl eh nie editieren. Also vi (ist ja standartmäßig drauf werde ich mir wohl so schnell nicht antun. Brauche was intuitives.

Danke jedoch für den tip, ach was solls, ich installier eben kwrite...

Code: Alles auswählen

lingin:~# apt-get install kwrite
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
E: Konnte Paket kwrite nicht finden
Wie heißt das paket? Ups, das ist ein kde paket, ich habe aber nichtmal x geschweige den kde...copy und past muß doch irgenwie auch über mehr als ne seite gehn???
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

michaa7
Beiträge: 4657
Registriert: 12.12.2004 00:46:49
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von michaa7 » 04.06.2005 23:17:44

blackm hat geschrieben:
michaa7 hat geschrieben:ich werde heut wirklich zum elch und brauche für den minimalsten pups ne hebamme: Ich kann die kernel config nicht copy und pasten, weil ich null ahnung habe, wie ich das in die zwischenablage bekomme. Ich arbeite mit putty u nd habe da die /boot/config.xyz.386 zuerst mit nano, dann mit more geöffnet, aber ich kann immer nur den sichtbaren seitenteil mit dem cursor markieren, es scrollt aber nie komplett weiter. Wie mache ich das?
https://sourceforge.net/projects/winscp/
Danke für diesen workaround...

Ich kenne, arbeite mit und schätze winscp. Falls du mir damit jedoch sagen willst, das mit bordmitteln nichts was größer als ne bildschirmseite ist in die zwischenablage kopiert werden kann und ich statt dessen die datei nach "FENSTERS" kopieren soll, na dann ...wenn das billy the gates liest ist bei dem ostern, weihnachten und fasching an einem tag....
gruß

michaa7

-------------------------------
Menschen ändern gelegentlich ihre Ansichten, aber nur selten ihre Motive. (Oskar Negt)

Antworten