Script führt sich nicht aus

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 13:00:56

Guten Tag,

ich brauche Hilfe.
Ich habe ein PC zu einem Router umgebaut ( 2 Netzwerkkarten eingebaut, Debian installiert, DHCP-Server eingerichtet, Schnittstellen konfiguriert)
Nun muss ich von Netzwerk A zu Netzwerk B pingen können und umgekehrt.
Hat nicht geklappt, habe weiter recherchiert und den Fehler gefunden:
Ich muss auf dem Router den befehl:

Code: Alles auswählen

-t nat -A POSTROUTING -o enp0s25      -j MASQUERADE
eingeben dass es funktioniert. Also wenn ich diesen Befehl eingebe funktioniert ein ping von einem Client aus Netzwerk A in Netzwerk B.
Starte ich den Router allerdings neu klappt es nichtmehr, desshalb habe ich ein Script geschrieben.
Es funktioniert nur nicht, vielleicht weiß ja jemand was mein Fehler ist und hoffentlich dann war.
nachdem ich das Script gespeichert hatte habe ich es ausgeführt mit :

Code: Alles auswählen

chmod 750 packetfilter 
--> kein problem

dann in den autostart hinzugefügt:

Code: Alles auswählen

update-rc.d packetfilter defaults
--> kein problem

neugestartet -->kein problem

schnittstelle 1:enp0s25

schnittstelle 2:enp16s0

Das Script:

Code: Alles auswählen

#! /bin/sh
        #
#init.d/packetfilter
#
###BEGIN INIT INFO
# Provides:     Packetfilter
# Required-Start: $network $remote_fs $syslog $named
# Required Stop:
# Required-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description:  Starts the Packetfilter

IPTABLES=/sbin/iptables

case "$1" in
        start)
                echo "Starte Paketfilter..."

                #alles leeren und forwarding aktivieren
                echo "1" > /proc/sys/net/ipv4/ip_forward



                $IPTABLES -t nat -A POSTROUTING -o enp0s25      -j MASQUERADE

                ;;
        stop)

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führ sich nicht aus

Beitrag von Meillo » 14.02.2018 13:10:05

Das Script ist unvollstaendig. Der Schluss fehlt.
Use ed once in a while!

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 13:28:48

okay und was wäre denn der Schluss ? ich will ja nur dass dieser eine command ausgeführt wird.
Tut mir leid bin in dem Bereich vollkommen neu.

Und kann es sein dass ich den selben Befehl auch eingeben muss nur mit enp16s0 anstatt enp0s25 damit man auch umgekehrt pingen kann?

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führt sich nicht aus

Beitrag von Meillo » 14.02.2018 13:31:50

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 13:28:48
okay und was wäre denn der Schluss ?
Ein `case' muss mit einem `esac' enden ... aber darueber hinaus muessen Initscripte eine bestimmte Form haben, da darf man nicht einfach einen Teil weglassen.
ich will ja nur dass dieser eine command ausgeführt wird.
Dann trage die Befehle in /etc/rc.local ein (vor das ``exit 0'').
Use ed once in a while!

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 13:43:27

okay danke :) das mit esac war ein copy & paste fehler

/etc/rc.local ist bei mir leer

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führt sich nicht aus

Beitrag von Meillo » 14.02.2018 13:49:31

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 13:43:27
/etc/rc.local ist bei mir leer
Bei Debian?

Ist aber auch egal. Trag die Befehle dort ein, wie werden dann am Ende des Bootvorgangs als root ausgefuehrt.
Use ed once in a while!

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 13:51:56

Ja, habe die default conf jetzt reinkopiert

Code: Alles auswählen

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
füge den befehl hinein setze danach noch exit =0 ein

melde mich wieder wenn ich es getestet habe.

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:01:31

Habe es getestet, funktioniert nicht.
Dies ist meine /etc/rc.local

Code: Alles auswählen

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

-t nat -A POSTROUTING -o enp0s25      -j MASQUERADE

exit 0
Befehlt ganz normal eingegeben:funktioniert.

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 14:12:40

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:01:31
-t nat -A POSTROUTING -o enp0s25 -j MASQUERADE
Ist kein Befehl sondern die Argumentenliste für iptables.

Ich würde da noch /sbin/iptables voran stellen :wink:

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:16:03

so dann ?

Code: Alles auswählen

/sbin/iptables -t nat -A POSTROUTING -o enp0s25      -j MASQUERADE
oder leerzeichen entfernen? leerzeichen zwischen enp0s25 und -j entfernt , /sbin/iptables hinzugefügt klappt trotzdem nicht
Zuletzt geändert von Nils96 am 14.02.2018 14:24:50, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 14:24:48

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:16:03
oder leerzeichen entfernen?
Leerzeichen kannst du so viele dazwischen stecken, wie du willst :wink:
Es sieht halt irgendwann nicht mehr schön aus :mrgreen:

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:25:16

leerzeichen zwischen enp0s25 und -j entfernt , /sbin/iptables hinzugefügt klappt trotzdem nicht

so langsam machts kein Spaß mehr :(

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 14:36:03

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:25:16
leerzeichen zwischen enp0s25 und -j entfernt
Ein Leerzeichen muß schon noch dazwischen bleiben.
so langsam machts kein Spaß mehr :(
Naja, man sollte sich schon ein bißchen in Linux einarbeiten, bevor man sich an etwas relativ kompliziertes wie ein Routersetup wagt.

Was gibt

Code: Alles auswählen

systemctl status rc-local.service
aus?

Was gibt

Code: Alles auswählen

ls -l /etc/rc.local 
aus?

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:43:31

ein Leerzeichen ist natürlich noch dazwischen

Code: Alles auswählen

root@debian:/home/nils# systemctl status rc-local.service
● rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static; vendor preset: enabled)
  Drop-In: /lib/systemd/system/rc-local.service.d
           └─debian.conf
   Active: inactive (dead)

Code: Alles auswählen

root@debian:/home/nils# ls -l /etc/rc.local
-rw-r--r-- 1 root root 369 Feb 14 14:16 /etc/rc.local
nachdem ich das inactive gesehen habe ich

Code: Alles auswählen

systemctl enable rc-local.service

probiert dabei kam das raus

Code: Alles auswählen

The unit files have no installation config (WantedBy, RequiredBy, Also, Alias
settings in the [Install] section, and DefaultInstance for template units).
This means they are not meant to be enabled using systemctl.
Possible reasons for having this kind of units are:
1) A unit may be statically enabled by being symlinked from another unit's
   .wants/ or .requires/ directory.
2) A unit's purpose may be to act as a helper for some other unit which has
   a requirement dependency on it.
3) A unit may be started when needed via activation (socket, path, timer,
   D-Bus, udev, scripted systemctl call, ...).
4) In case of template units, the unit is meant to be enabled with some
   instance name specified.
ist es über haupt sinnvoll den Befehl zu benutzen, ich mache das ja alles nur um später von Netzwerk A (in dem ein PXE Server steht) Clients in Netzwerk B zu installieren. Desshalb habe ich ja überhaupt den PC mit den 2 Netzwerkkarten installiert und das neue Netzwerk B erstellt.
Zuletzt geändert von Nils96 am 14.02.2018 14:48:55, insgesamt 1-mal geändert.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führt sich nicht aus

Beitrag von Meillo » 14.02.2018 14:46:34

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:25:16
so langsam machts kein Spaß mehr :(
Eigentlich faengt der Spass jetzt erst an, weil jetzt ist's an der Zeit, das Trial'n'Error aufzugeben und stattdessen die Grundlagen zu lernen. Damit kommst du richtig voran. Nach ein bisschen Eingewoehnung wirst du schon deinen Spass daran finden.

Und wenn alles nichts hilft: https://www.gnu.org/fun/humor.html :-D
Use ed once in a while!

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führt sich nicht aus

Beitrag von Meillo » 14.02.2018 14:49:34

MSfree hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:36:03
Was gibt

Code: Alles auswählen

systemctl status rc-local.service
aus?
Uff ... mit Systemd habe ich natuerlich nicht gerechnet ... da vergeht mir nun auch der Spass. 8O
Use ed once in a while!

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:51:43

@Meilo
Das alles ist ja nur Teil meines IHK Projekt(Fachinformatiker für Systemintegration)... nur wenn ich das nicht bis zum 19.2 gelöst bekomme muss ich mir spontan ein neues projekt überlegen welches ich ohne Probleme schnell hinbekomme.

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 14:53:23

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:43:31

Code: Alles auswählen

root@debian:/home/nils# ls -l /etc/rc.local
-rw-r--r-- 1 root root 369 Feb 14 14:16 /etc/rc.local
Die ist nicht ausführbar!

Code: Alles auswählen

chmod +x /etc/rc.local
sollte das ändern.
nachdem ich das inactive gesehen habe ich

Code: Alles auswählen

systemctl enable rc-local.service

probiert dabei kam das raus
Was möglicherweise daran liegt, daß bei dir /etc/rc.local nicht ausführbar ist. Also nach dem chmod nochmal enablen.

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 14:58:00

So ! Das funktioniert jetzt, wenn ich pings von Netwzerk A zu Netzwerk B zulassen will muss ich ja das selbe für enp16s0 machen oder ?
DANKE DANKE DANKE !

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Script führt sich nicht aus

Beitrag von Meillo » 14.02.2018 15:05:57

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 14:51:43
@Meilo
Das alles ist ja nur Teil meines IHK Projekt(Fachinformatiker für Systemintegration)... nur wenn ich das nicht bis zum 19.2 gelöst bekomme muss ich mir spontan ein neues projekt überlegen welches ich ohne Probleme schnell hinbekomme.
Keine Sorge, dir wird ja sowohl schnell als auch zielfuehrend geholfen ...
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 15:12:53

Nunja, jetzt weißt du zumindest, wie man Befehle in die rc.local einbaut und diese auch zum Laufen bringt.

Dein Routingproblem ist damit aber eigentlich nicht gelöst. Um Netzwerkverbindungen vno A nach B und auch zurück von B nach A zu realisieren, ist NAT-Routing nicht das richtige Mittel. Da sollte man Routing ohne NAT einsetzen. Natürlich könnte man NAT in beide Richtungen einrichten, NAT verursacht aber einen nicht ganz unerheblichen Overhead im Netzwerk und bei GBit-LAN dürfte auch die CPU ordentlich zu tun bekommen.

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 15:20:44

MSfree ja das ist es ja da die IP ja verschleiert wird weiss der PXE Server nicht wohin der die Pakete zurückschicken kann.
Kennst du dich da aus oder sollte ich ein neues Thema eröffnen ? also dann das routing ohne NAT ? :) trotzdem vielen vielen dank an euch beide !

Benutzeravatar
MSfree
Beiträge: 10721
Registriert: 25.09.2007 19:59:30

Re: Script führt sich nicht aus

Beitrag von MSfree » 14.02.2018 15:30:25

Nils96 hat geschrieben: ↑ zum Beitrag ↑
14.02.2018 15:20:44
MSfree ja das ist es ja da die IP ja verschleiert wird weiss der PXE Server nicht wohin der die Pakete zurückschicken kann.
Wohin die Pakete zurück gehen, weiß aber die Software, die sich um NAT kümmert. Dem PXE-Server (eigentlich wohl eher ein bootp-Server mit tftp) ist das ziemich egal.
Kennst du dich da aus oder sollte ich ein neues Thema eröffnen ?
Vielleicht kannst du einfach mal ein wenig skizzieren, wie das Netzwerk überhaupt aufgebaut bzw. in Subnetze unterteilt ist. So, wie ich das im Moment sehe, weiß ich gar nicht, warum du für PXE überhaupt einen Router brauchst, einen PXE-Server kannst du auch so ins Netz hängen.

Nils96
Beiträge: 49
Registriert: 14.02.2018 12:46:36

Re: Script führt sich nicht aus

Beitrag von Nils96 » 14.02.2018 15:37:24

okay werde ich machen.
könnte vielleicht etwas dauern.Spätestens morgen ist es da!!!

ren22

Re: Script führt sich nicht aus

Beitrag von ren22 » 14.02.2018 17:28:39

unter /etc/iptables .. liegt eine Datei namens iptables.rules da stehen die Regeln für die iptables drin ... vllt wäre das eine Lösung für dich.

wenn ich mich recht erinnere habe ich damals iptables regeln erstellt, per Hand auf der Kommandozeile und mit sudo iptables-save die Regeln gespeichert, das speichern macht iptables-save automatisch in der der Datei /etc/iptables/rules.vN ... N=4 oder 6

Code: Alles auswählen

ls /etc/iptables/
flush-ip6tables.sh  flush-iptables.sh  ip6tables.rules  iptables.rules  rules.v4  rules.v6

@offtopic
IPV6 braucht doch kein NAT oder ?

Antworten