[C++] Programmierinterface -> iptables

X

X_ .

Gast
Programmierinterface C++ -> iptables

Hiho.

Ich habe da ein Problem:
Ich habe ein inzwischen recht umfangreiches
iptables-Firewallscript und mein alter P200 (läuft als Router/Gateway) braucht inzwischen mehrere Minuten, um
das Skript abzuarbeiten.
Gibt es eine Möglichkeit ein Skript zu kompilieren, so
das es nicht jedesmal wieder neu über die Shell interpretiert werden muss. Optimal wäre natürlich C oder C++.

Weiss jemand was ?
 
Naja die Sourcen von iptables sind doch frei verfuegbar.
Kannst ja die dort schon existierenden Funktionen fuer nen eigenes kleines Progie verwenden.
Schau mal in die iptables.c rein ... dort werden die Kommandos geparst und umgesetzt.
 
Zuletzt bearbeitet:
Hmm ich glaub die iptables-standalone.c sollte fuer dich am interessantesten sein.

Das ist die Sourefile mit der Main Funktion.

Code:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <iptables.h>

int
main(int argc, char *argv[])
{
	int ret;
	char *table = "filter";
	iptc_handle_t handle = NULL;

	program_name = "iptables";
	program_version = NETFILTER_VERSION;

#ifdef NO_SHARED_LIBS
	init_extensions();
#endif
	
	ret = do_command(argc, argv, &table, &handle);
	if (ret)
		ret = iptc_commit(&handle);

	if (!ret)
		fprintf(stderr, "iptables: %s\n",
			iptc_strerror(errno));

	exit(!ret);
}

do_command ist hier das was interessiert.
In argc stehen halt die Anzahl der Parameter drin und argv ist halt ein Array mit den einzelnen Parametern.
An die Funktion uebergibst du halt deine einzelnen Rules ... in einen C Programm und das wars schon (das rauswerten des ret ,speziell halt das iptc_commit() nach jedem ausfuehren von do_command() nicht vergessen).

Musst also hauptsaechlich nur dein Shell Script nach C uebersetzen.
 
Problem anders gelöst

Wollt euch nur informieren :

Ich habe das über den Compler jetzt gelassen
(war mir zu undynamisch). Statt dessen habe ich das
Skript so erweitert, dass zum Beispiel das Blocken
von AdServer-Anfragen eine eigene Chain bekommt,
die auch eingebunden wird, aber erstmal leerbleibt.
Die Regeln werden dann erst am
Schluss (nach hochfahren der Firewall) im Hintergrund eingesetzt.
Da die AdServer mit über 700 Einträgen sehr lange brauchen,
aber eben auch nicht sicherheitsrelevant sind, bin ich damit zufrieden.

Vielleicht interessiert es ja jemanden... :)

X_
 
Zurück
Oben