> 3) Previously, the install scripts included in the Shorewall packages
> were very restrictive. They could either be run to install directly
> onto the system in a distribution-dependent way, or they could
> install into a directory in a distribution-independent way. This
> limited their usefullness to packagers.
>
> Beginning with this release, the install scripts handle the install
> system and the target system independently. When running an
> installer, the following environmental variables can be set:
>
> a) BUILD - Describes the system where the installer is
> running. Accepted values are:
>
> cygwin - Cygwin running u\nder a Microsoft OS
> apple - OS X
> debian - Debian,Ubuntu,etc.
> redhat - Fedora,RHEL,Centos,Foobar,etc.
> slackware - Slackware
> archlinux - Arch Linux
> linux - Generic Linux
>
Is there a definite list of all arch-dependent variables used to define
these various "profiles"? If so, what are they?
Also, what happens if I want to use a different install directory - say
"/opt/shorewall"?
In addition, shorewall's uninstall.sh is bound to fail miserably,
because it is littered with absolute/assumed path names, so it is
completely useless given the above setup. Not to mention that if I want
to update a remote installation (say, shorewall-lite on embedded device)
there is currently no way I could do that easily without messing about
and wasting hours of my time.
> The choice of HOST and TARGET follow the naming of similar macros
> in rpm and autoconf.
>
You mean "HOST" and "BUILD", surely?
> Additionally, support has been added for sourcing a file containing
> option settings. The file name is 'shorewall-pkg.config' in the
> parent directory of the untar'ed package file.
>
Similar to my question above - could you list the set of variables
used/configurable by install.sh for each arch?
> 6) A SWITCH column has been added to /etc/shorewall/masq. This column
> allows for enabling and disabling a rule based on a setting in
> /proc/net/nf_condition. See shorewall-masq(5) for details.
>
masq:
~~~~~
eth0 10.1.1.7/30 41000-42000
shorewall compile passes, then I get the following iptables error:
iptables-restore v1.4.12.2: Need TCP, UDP, SCTP or DCCP with port
specification
masq:
~~~~~
eth0 10.1.1.7/30 41000-42000 udp +ntp-ports[dst,dst]
Compiling /etc/shorewall/masq...
ERROR: Invalid/Unknown tcp port/service (+ntp-ports[dst)
ntp-ports is 2 dimensional: proto:port
the following iptables statement is perfectly legit (given the above
SNAT bug for having to always specify the protocol):
iptables -t nat -A eth0_masq -p 17 -s 10.1.1.7/30 -m set --match-set
ntp-ports dst,dst -j MASQUERADE --to-ports 41000-42000
> 7) The rules compiler now issues a warning when the 'src' ipset flag
> is used in a destination column or the 'dst' ipset flag is used in
> a source column.
>
Mar 18 02:02:19 test1 shorewall[28538]: WARNING: The 'dst' ipset flag
is used in a Source column : /etc/shorewall/rules (line 21)
Mar 18 02:02:19 test1 shorewall[28538]: WARNING: The 'dst' ipset flag
is used in a Source column : /etc/shorewall/rules (line 22)
Mar 18 02:02:19 test1 shorewall[28538]: WARNING: The 'dst' ipset flag
is used in a Source column : /etc/shorewall/rules (line 23)
Mar 18 02:02:19 test1 shorewall[28538]: WARNING: The 'dst' ipset flag
is used in a Source column : /etc/shorewall/rules (line 24)
The above warnings are produced as a result of completely legitimate use
of the 'dst' column in statements like "ACCEPT $FW:+some-set[dst]
net:+some-other-set", so shorewall should be amended to *not* issue these!
Also, I am still getting these during compilation:
shorewall[1439]: Compiling /etc/shorewall/blrules...
shorewall[1439]: WARNING: Ipset whitelist does not exist
shorewall[1439]: Compiling /etc/shorewall/rules...
shorewall[1439]: WARNING: Ipset voip-blacklist does not exist
shorewall[1439]: WARNING: Ipset XXX does not exist
[...ad nauseum...]
shorewall[1439]: WARNING: Ipset ZZZ does not exist
The above still has not been fixed, though it was reported to you
before. It is true that these ipsets "do not exists", but are created as
a result of execution of "init", so in effect they do exists.
> 10) The 'update' command now omits non-default settings of
> WIDE_TC_MARKS and HIGH_ROUTE_MARKS from the updated .conf file.
>
"shorewall update" does not function if files are in a non-standard
directory (.back files renamed, but new files placed in the default
directory). For example, if I just have a placeholder shorewall.conf
file in /etc/shorewall and everything else is in, say, /opt/shorewall,
"shorewall update" is royally screwed!
In addition to the above bugs:
DNAT bugs
1. There is currently *no* support for ipsets in DNAT whatsoever! The
following should be a perfectly legitimate statement:
"DNAT net:+external-net $FW:10.1.1.1 udp +proxy-ports", which should
be translated to:
"-A net_dnat -p 17 -m set --match-set proxy-ports dst -m set
--match-set external-net src -j DNAT --to-destination 10.1.1.1", but
shorewall chokes on it.
2. Using shorewall to prepare remote configuration files for
shorewall-lite I get the following little gems (I used "shorewall
compile" and activated full tracing):
rules
~~~~~
DNAT wan:10.2.1.0/24 lan:10.1.2.6:1700 tcp 1701 - 10.2.2.2
Compiling /home/mr-4/shorewall/rules...
ERROR: Internal error in Shorewall::Chains::set_rule_option at
/usr/share/perl5/Shorewall/Chains.pm line 727 :
/home/mr-4/shorewall/rules (line 17) at
/usr/share/perl5/Shorewall/Config.pm line 834
Shorewall::Config::fatal_error('Internal error in
Shorewall::Chains::set_rule_option at /usr/...') called at
/usr/share/perl5/Shorewall/Config.pm line 868
Shorewall::Config::assert('') called at
/usr/share/perl5/Shorewall/Chains.pm line 727
Shorewall::Chains::set_rule_option('HASH(0x1710ac8)', 'conntrack',
'--ctorigdst 10.2.2.2') called at /usr/share/perl5/Shorewall/Chains.pm
line 806
Shorewall::Chains::transform_rule('-p 6 --dport 1700 -m conntrack
--ctorigdstport 1701 -s 10.2.1...') called at
/usr/share/perl5/Shorewall/Chains.pm line 1016
Shorewall::Chains::push_rule('HASH(0x16e4d68)', '-p 6 --dport 1700
-m conntrack --ctorigdstport 1701 -s 10.2.1...') called at
/usr/share/perl5/Shorewall/Chains.pm line 1164
Shorewall::Chains::add_rule('HASH(0x16e4d68)', '-p 6 --dport 1700 -m
conntrack --ctorigdstport 1701 -s 10.2.1...', 1) called at
/usr/share/perl5/Shorewall/Chains.pm line 5942
Shorewall::Chains::expand_rule('HASH(0x16e4d68)', 0, '-p 6 --dport
1700 -m conntrack --ctorigdstport 1701 ', '10.2.1.0/24', 10.1.2.6,
10.2.2.2, 'ACCEPT', '', 'DNAT', ...) called at
/usr/share/perl5/Shorewall/Rules.pm line 2280
Shorewall::Rules::process_rule1(undef, 'DNAT', '',
'wan:10.2.1.0/24', 'lan:10.1.2.6:1700', 'tcp', 1701, '-', 10.2.2.2, ...)
called at /usr/share/perl5/Shorewall/Rules.pm line 2434
Shorewall::Rules::process_rule() called at
/usr/share/perl5/Shorewall/Rules.pm line 2577
Shorewall::Rules::process_rules(0) called at
/usr/share/perl5/Shorewall/Compiler.pm line 794
Shorewall::Compiler::compiler('script', 'firewall', 'directory',
'/home/mr-4/shorewall', 'verbosity', 1, 'timestamp', 0, 'debug', ...)
called at /usr/libexec/shorewall/compiler.pl line 130
make: *** [compile] Error 25
rules
~~~~~
DNAT- wan:10.2.1.0/24 lan:10.1.2.6:1700 tcp 1701 - 10.2.2.2
Compiling /home/mr-4/shorewall/rules...
WARNING: The destination zone (lan) is ignored in DNAT rules :
/home/mr-4/shorewall/rules (line 17) at
/usr/share/perl5/Shorewall/Rules.pm line 1891
Shorewall::Rules::process_rule1(undef, 'DNAT-', '',
'wan:10.2.1.0/24', 'lan:10.1.2.6:1700', 'tcp', 1701, '-', 10.2.2.2, ...)
called at /usr/share/perl5/Shorewall/Rules.pm line 2434
Shorewall::Rules::process_rule() called at
/usr/share/perl5/Shorewall/Rules.pm line 2577
Shorewall::Rules::process_rules(0) called at
/usr/share/perl5/Shorewall/Compiler.pm line 794
Shorewall::Compiler::compiler('script', 'firewall', 'directory',
'/home/mr-4/shorewall', 'verbosity', 1, 'timestamp', 0, 'debug', ...)
called at /usr/libexec/shorewall/compiler.pl line 130
rules
~~~~~
DNAT wan:10.2.1.0/24 10.1.2.6:1700 tcp 1701 - 10.2.2.2
Compiling /home/mr-4/shorewall/rules...
ERROR: Unknown destination zone (10.1.2.6) :
/home/mr-4/shorewall/rules (line 17) at
/usr/share/perl5/Shorewall/Config.pm line 834
Shorewall::Config::fatal_error('Unknown destination zone
(10.1.2.6)') called at /usr/share/perl5/Shorewall/Rules.pm line 1901
Shorewall::Rules::process_rule1(undef, 'DNAT', '',
'wan:10.2.1.0/24', '10.1.2.6:1700', 'tcp', 1701, '-', 10.2.2.2, ...)
called at /usr/share/perl5/Shorewall/Rules.pm line 2434
Shorewall::Rules::process_rule() called at
/usr/share/perl5/Shorewall/Rules.pm line 2577
Shorewall::Rules::process_rules(0) called at
/usr/share/perl5/Shorewall/Compiler.pm line 794
Shorewall::Compiler::compiler('script', 'firewall', 'directory',
'/home/mr-4/shorewall', 'verbosity', 1, 'timestamp', 0, 'debug', ...)
called at /usr/libexec/shorewall/compiler.pl line 130
3. Crap status messages included in the compiled "firewall" file for use
on the remote machine, messages like:
progress_message2 Processing /home/mr-4/shorewall/init ... - it
should be just "Procesing init" as that directory is on my BUILD, not
HOST ("/home/mr-4/shorewall/" does *not* exist on HOST)
4. Wrong "SHOREWALL_SHELL" message: in non-standard configuration
(Android, for example - yes I *do* use shorewall-lite there!) the
directory structure is _very_ different from the standard Linux one, and
the location of the shell is also different. Since I compile "firewall"
and "firewall.conf" on a Linux BUILD, but deploy this (via a heavily
modified Makefile) to Android device, the location and name of the bash
shell is very different on BUILD and HOST, but during compilation I get
this non-nonsensical message:
WARNING: The program specified in SHOREWALL_SHELL does not exist or
is not executable; falling back to /bin/sh
This needs to be removed. I also get this:
/usr/share/shorewall/lib.cli-std: line 61: id: command not found
which is also nonsensical as "id" does exist, but it is in a different
location.
This all stems from the fact that throughout shorewall, various paths
are "assumed" and there is no central place from where those are picked
up - the whole thing is a mess!
It would be nice if shorewall had a single file (maybe similar to
shorewall-pkg.config, but on the installed machine where shorewall
functions) where it stores various path names and program names etc and
not have them scattered all over the place. Not to mention that if I
want to remove shorewall this would be nigh-impossible without messing
with my system for hours!
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Shorewall-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/shorewall-devel