forked from extern/shorewall_code
Add 'default_rt' option
git-svn-id: https://shorewall.svn.sourceforge.net/svnroot/shorewall/trunk@9249 fbd18981-670d-0410-9b5c-8dc0c1a9a2bb
This commit is contained in:
parent
d4d8d79dc2
commit
ee6cdfe001
@ -253,6 +253,21 @@ our $mode;
|
|||||||
|
|
||||||
our $family;
|
our $family;
|
||||||
|
|
||||||
|
#
|
||||||
|
# These are the zone-oriented builtin targets
|
||||||
|
#
|
||||||
|
our %builtin_target = ( ACCEPT => 1,
|
||||||
|
REJECT => 1,
|
||||||
|
DROP => 1,
|
||||||
|
RETURN => 1,
|
||||||
|
DNAT => 1,
|
||||||
|
SAME => 1,
|
||||||
|
LOG => 1,
|
||||||
|
NFLOG => 1,
|
||||||
|
QUEUE => 1,
|
||||||
|
NFQUEUE => 1,
|
||||||
|
REDIRECT => 1 );
|
||||||
|
|
||||||
#
|
#
|
||||||
# Initialize globals -- we take this novel approach to globals initialization to allow
|
# Initialize globals -- we take this novel approach to globals initialization to allow
|
||||||
# the compiler to run multiple times in the same process. The
|
# the compiler to run multiple times in the same process. The
|
||||||
@ -471,7 +486,7 @@ sub add_rule($$;$)
|
|||||||
push_rule ( $chainref, $rule );
|
push_rule ( $chainref, $rule );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Add a jump from the chain represented by the reference in the first argument to
|
# Add a jump from the chain represented by the reference in the first argument to
|
||||||
# the target in the second argument. The optional third argument specifies any
|
# the target in the second argument. The optional third argument specifies any
|
||||||
@ -494,7 +509,7 @@ sub add_jump( $$$;$ ) {
|
|||||||
#
|
#
|
||||||
# Ensure that we have the chain unless it is a builtin like 'ACCEPT'
|
# Ensure that we have the chain unless it is a builtin like 'ACCEPT'
|
||||||
#
|
#
|
||||||
$toref = ensure_chain( $fromref->{table} , $to ) unless ( $targets{$to} || 0 ) & STANDARD;
|
$toref = ensure_chain( $fromref->{table} , $to ) unless $builtin_target{ $to };
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -525,7 +540,6 @@ sub insert_rule($$$)
|
|||||||
$iprangematch = 0;
|
$iprangematch = 0;
|
||||||
|
|
||||||
$chainref->{referenced} = 1;
|
$chainref->{referenced} = 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -769,7 +783,7 @@ sub new_chain($$)
|
|||||||
{
|
{
|
||||||
my ($table, $chain) = @_;
|
my ($table, $chain) = @_;
|
||||||
|
|
||||||
fatal_error "Internal error in new_chain()" if $chain_table{$table}{$chain};
|
fatal_error "Internal error in new_chain()" if $chain_table{$table}{$chain} || $builtin_target{ $chain };
|
||||||
|
|
||||||
$chain_table{$table}{$chain} = { name => $chain,
|
$chain_table{$table}{$chain} = { name => $chain,
|
||||||
rules => [],
|
rules => [],
|
||||||
@ -1136,33 +1150,29 @@ sub newexclusionchain() {
|
|||||||
# one for destination exclusion.
|
# one for destination exclusion.
|
||||||
#
|
#
|
||||||
sub source_exclusion( $$ ) {
|
sub source_exclusion( $$ ) {
|
||||||
my ( $exclusions, $targetref ) = @_;
|
my ( $exclusions, $target ) = @_;
|
||||||
|
|
||||||
return $targetref unless @$exclusions;
|
|
||||||
|
|
||||||
$targetref = ensure_filter_chain( $targetref, 0 ) unless reftype $targetref;
|
|
||||||
|
|
||||||
my $chainref = new_chain( $targetref->{table}, newexclusionchain );
|
|
||||||
|
|
||||||
|
return $target unless @$exclusions;
|
||||||
|
|
||||||
|
my $chainref = new_chain( reftype $target ? $target->{table} : 'filter' , newexclusionchain );
|
||||||
|
|
||||||
add_rule( $chainref, match_source_net( $_ ) . '-j RETURN' ) for @$exclusions;
|
add_rule( $chainref, match_source_net( $_ ) . '-j RETURN' ) for @$exclusions;
|
||||||
add_jump( $chainref, $targetref, 1 );
|
add_jump( $chainref, $target, 1 );
|
||||||
|
|
||||||
reftype $_[1] ? $chainref : $chainref->{name};
|
reftype $target ? $chainref : $chainref->{name};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub dest_exclusion( $$ ) {
|
sub dest_exclusion( $$ ) {
|
||||||
my ( $exclusions, $targetref ) = @_;
|
my ( $exclusions, $target ) = @_;
|
||||||
|
|
||||||
return $targetref unless @$exclusions;
|
return $target unless @$exclusions;
|
||||||
|
|
||||||
$targetref = ensure_filter_chain( $targetref, 0 ) unless reftype $targetref;
|
|
||||||
|
|
||||||
my $chainref = new_chain( $targetref->{table}, newexclusionchain );
|
|
||||||
|
|
||||||
|
my $chainref = new_chain( reftype $target ? $target->{table} : 'filter' , newexclusionchain );
|
||||||
|
|
||||||
add_rule( $chainref, match_dest_net( $_ ) . '-j RETURN' ) for @$exclusions;
|
add_rule( $chainref, match_dest_net( $_ ) . '-j RETURN' ) for @$exclusions;
|
||||||
add_jump( $chainref, $targetref, 1 );
|
add_jump( $chainref, $target, 1 );
|
||||||
|
|
||||||
reftype $_[1] ? $targetref : $targetref->{name};
|
reftype $target ? $chainref : $chainref->{name};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub clearrule() {
|
sub clearrule() {
|
||||||
|
@ -299,7 +299,7 @@ sub initialize( $ ) {
|
|||||||
LOGPARMS => '',
|
LOGPARMS => '',
|
||||||
TC_SCRIPT => '',
|
TC_SCRIPT => '',
|
||||||
EXPORT => 0,
|
EXPORT => 0,
|
||||||
VERSION => "4.2.4-RC3",
|
VERSION => "4.2.4",
|
||||||
CAPVERSION => 40203 ,
|
CAPVERSION => 40203 ,
|
||||||
);
|
);
|
||||||
#
|
#
|
||||||
@ -995,7 +995,7 @@ sub create_temp_object( $ ) {
|
|||||||
fatal_error "A compiled script may not be named 'shorewall'" if "$file" eq 'shorewall' && $suffix eq '';
|
fatal_error "A compiled script may not be named 'shorewall'" if "$file" eq 'shorewall' && $suffix eq '';
|
||||||
|
|
||||||
eval {
|
eval {
|
||||||
$dir = abs_path $dir;
|
$dir = abs_path $dir unless $dir =~ m|^/|; # Work around http://rt.cpan.org/Public/Bug/Display.html?id=1385
|
||||||
( $object, $tempfile ) = tempfile ( 'tempfileXXXX' , DIR => $dir );
|
( $object, $tempfile ) = tempfile ( 'tempfileXXXX' , DIR => $dir );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -462,6 +462,20 @@
|
|||||||
the INTERFACE column is assumed.</para>
|
the INTERFACE column is assumed.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term>default_rt (Added in Shorewall-perl 4.2.5)</term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Indicates that a default route through the provider
|
||||||
|
should be added to the default routing table (table 253).
|
||||||
|
The route is added with a metric equal to the provider
|
||||||
|
NUMBER so multiple providers can have this option. The
|
||||||
|
option is ignored with a warning message if
|
||||||
|
USE_DEFAULT_RT=Yes in
|
||||||
|
<filename>shorewall.conf</filename>.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
|
|
||||||
<para>For those of you who are terminally confused
|
<para>For those of you who are terminally confused
|
||||||
@ -1256,7 +1270,7 @@ wlan0 192.168.0.0/24</programlisting><note>
|
|||||||
</section>
|
</section>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section id="Complete">
|
||||||
<title>A Complete Working Example</title>
|
<title>A Complete Working Example</title>
|
||||||
|
|
||||||
<para>This section describes the network at shorewall.net early in 2009.
|
<para>This section describes the network at shorewall.net early in 2009.
|
||||||
@ -1298,9 +1312,30 @@ wlan0 192.168.0.0/24</programlisting><note>
|
|||||||
|
|
||||||
<para>Because of the speed of the cable provider, all traffic uses that
|
<para>Because of the speed of the cable provider, all traffic uses that
|
||||||
provider unless there is a specific need for the traffic to use the DSL
|
provider unless there is a specific need for the traffic to use the DSL
|
||||||
line. As a consequence, I have disabled all route filtering on the
|
line.</para>
|
||||||
|
|
||||||
|
<itemizedlist>
|
||||||
|
<listitem>
|
||||||
|
<para>Responses to connections from the Internet to one of the DSL IP
|
||||||
|
addresses -- the <emphasis role="bold">track</emphasis> option takes
|
||||||
|
care of that.</para>
|
||||||
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Connections initiated by the server and connection requested by
|
||||||
|
clients on the firewall that have bound their local socket to one of
|
||||||
|
the DSL IP addresses. Two entries in
|
||||||
|
<filename>/etc/shorewall/route_rules</filename> take care of that
|
||||||
|
traffic.</para>
|
||||||
|
</listitem>
|
||||||
|
</itemizedlist>
|
||||||
|
|
||||||
|
<para>As a consequence, I have disabled all route filtering on the
|
||||||
firewall and do not use the <emphasis role="bold">balance</emphasis>
|
firewall and do not use the <emphasis role="bold">balance</emphasis>
|
||||||
option in <filename>/etc/shorewall/providers</filename>.</para>
|
option in <filename>/etc/shorewall/providers</filename>. The default route
|
||||||
|
in the main table is established by DHCP. By specifying the
|
||||||
|
<emphasis>default_rt</emphasis> option on Avvanta, I ensure that there is
|
||||||
|
a default route when Comcast is down.</para>
|
||||||
|
|
||||||
<para><filename>/etc/sysctl.conf</filename>:</para>
|
<para><filename>/etc/sysctl.conf</filename>:</para>
|
||||||
|
|
||||||
@ -1308,9 +1343,9 @@ wlan0 192.168.0.0/24</programlisting><note>
|
|||||||
|
|
||||||
<para><filename>/etc/shorewall/providers</filename>:</para>
|
<para><filename>/etc/shorewall/providers</filename>:</para>
|
||||||
|
|
||||||
<programlisting>#NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY
|
<programlisting>#NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY
|
||||||
Avvanta 1 0x100 main eth0 206.124.146.254 track,loose eth2,eth4,tun*
|
Avvanta 1 0x100 main eth0 206.124.146.254 track,loose,default_rt eth2,eth4,tun*
|
||||||
Comcast 2 0x200 main eth3 detect track eth2,eth4,tun*
|
Comcast 2 0x200 main eth3 detect track eth2,eth4,tun*
|
||||||
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE</programlisting>
|
#LAST LINE -- ADD YOUR ENTRIES ABOVE THIS LINE -- DO NOT REMOVE</programlisting>
|
||||||
|
|
||||||
<para>The <emphasis role="bold">loose</emphasis> option on Avvanta results
|
<para>The <emphasis role="bold">loose</emphasis> option on Avvanta results
|
||||||
@ -1370,6 +1405,8 @@ default via 71.227.156.1 dev eth3 src 71.227.156.229
|
|||||||
|
|
||||||
Table default:
|
Table default:
|
||||||
|
|
||||||
|
default via 206.124.146.254 dev eth0 metric 1
|
||||||
|
|
||||||
Table local:
|
Table local:
|
||||||
|
|
||||||
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
|
broadcast 127.255.255.255 dev lo proto kernel scope link src 127.0.0.1
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
||||||
|
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
|
||||||
<refentry>
|
<refentry>
|
||||||
<refmeta>
|
<refmeta>
|
||||||
<refentrytitle>shorewall-providers</refentrytitle>
|
<refentrytitle>shorewall-providers</refentrytitle>
|
||||||
@ -97,7 +99,7 @@
|
|||||||
previously listed provider. You may select only certain entries from
|
previously listed provider. You may select only certain entries from
|
||||||
the table to copy by using the COPY column below. This column should
|
the table to copy by using the COPY column below. This column should
|
||||||
contain a dash ("-') when USE_DEFAULT_RT=Yes in <ulink
|
contain a dash ("-') when USE_DEFAULT_RT=Yes in <ulink
|
||||||
url="shorewall.conf.html">shorewall.conf(5)</ulink>. </para>
|
url="shorewall.conf.html">shorewall.conf(5)</ulink>.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
@ -199,7 +201,8 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>src=<replaceable>source-address</replaceable></term>
|
<term><emphasis
|
||||||
|
role="bold">src=</emphasis><replaceable>source-address</replaceable></term>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Added in Shorewall-perl 4.1.5. Specifies the source
|
<para>Added in Shorewall-perl 4.1.5. Specifies the source
|
||||||
@ -213,7 +216,8 @@
|
|||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
<varlistentry>
|
<varlistentry>
|
||||||
<term>mtu=<replaceable>number</replaceable></term>
|
<term><emphasis
|
||||||
|
role="bold">mtu=</emphasis><replaceable>number</replaceable></term>
|
||||||
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>Added in Shorewall-perl 4.1.5. Specifies the MTU when
|
<para>Added in Shorewall-perl 4.1.5. Specifies the MTU when
|
||||||
@ -221,6 +225,20 @@
|
|||||||
interface named in the INTERFACE column is assumed.</para>
|
interface named in the INTERFACE column is assumed.</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
|
|
||||||
|
<varlistentry>
|
||||||
|
<term><emphasis role="bold">default_rt</emphasis></term>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>Added in Shorewall-perl 4.2.5. Indicates that a default
|
||||||
|
route through the provider should be added to the default
|
||||||
|
routing table (table 253). The route is added with a metric
|
||||||
|
equal to the provider NUMBER so multiple providers can have
|
||||||
|
this option. The option is ignored with a warning message if
|
||||||
|
USE_DEFAULT_RT=Yes in
|
||||||
|
<filename>shorewall.conf</filename>.</para>
|
||||||
|
</listitem>
|
||||||
|
</varlistentry>
|
||||||
</variablelist>
|
</variablelist>
|
||||||
</listitem>
|
</listitem>
|
||||||
</varlistentry>
|
</varlistentry>
|
||||||
@ -301,4 +319,4 @@
|
|||||||
shorewall-tcclasses(5), shorewall-tcdevices(5), shorewall-tcrules(5),
|
shorewall-tcclasses(5), shorewall-tcdevices(5), shorewall-tcrules(5),
|
||||||
shorewall-tos(5), shorewall-tunnels(5), shorewall-zones(5)</para>
|
shorewall-tos(5), shorewall-tunnels(5), shorewall-zones(5)</para>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
</refentry>
|
</refentry>
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<h1 style="text-align: left;">Shorewall Documentation</h1>
|
<h1 style="text-align: left;">Shorewall Documentation</h1>
|
||||||
<span style="font-weight: bold;">Tom Eastep</span><br>
|
<span style="font-weight: bold;">Tom Eastep</span><br>
|
||||||
<span style="font-weight: bold;">
|
<span style="font-weight: bold;">
|
||||||
</span>Copyright © 2005-2007 Thomas M. Eastep<br>
|
</span>Copyright © 2005-2009 Thomas M. Eastep<br>
|
||||||
<p>Permission is granted to copy, distribute and/or modify this
|
<p>Permission is granted to copy, distribute and/or modify this
|
||||||
document
|
document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.2 or
|
under the terms of the GNU Free Documentation License, Version 1.2 or
|
||||||
@ -21,7 +21,7 @@ license is included in the section entitled “<span class="quote"><a
|
|||||||
href="GnuCopyright.htm" target="_self">GNU Free Documentation
|
href="GnuCopyright.htm" target="_self">GNU Free Documentation
|
||||||
License</a></span>”.<br>
|
License</a></span>”.<br>
|
||||||
</p>
|
</p>
|
||||||
<p>2008-10-05<br>
|
<p>2009-01-02<br>
|
||||||
</p>
|
</p>
|
||||||
<hr style="width: 100%; height: 2px;"> <strong></strong>
|
<hr style="width: 100%; height: 2px;"> <strong></strong>
|
||||||
<ul>
|
<ul>
|
||||||
@ -53,7 +53,7 @@ released with Shorewall 3.4.0 and later <br>
|
|||||||
<a href="/3.0/manpages/Manpages.html">Shorewall 3.x</a><br>
|
<a href="/3.0/manpages/Manpages.html">Shorewall 3.x</a><br>
|
||||||
<a href="/4.0/Manpages.html">Shorewall 4.0</a><br>
|
<a href="/4.0/Manpages.html">Shorewall 4.0</a><br>
|
||||||
<a href="Manpages.html">Shorewall 4.2</a><br>
|
<a href="Manpages.html">Shorewall 4.2</a><br>
|
||||||
<a href="Manpages6.html">Shorewall6 4.x (IPv6 Support)</a><br>
|
<a href="Manpages6.html">Shorewall6 4.2 (IPv6 Support)</a><br>
|
||||||
<br>
|
<br>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="shorewall_features.htm">Shorewall <span
|
<li><a href="shorewall_features.htm">Shorewall <span
|
||||||
@ -70,11 +70,7 @@ Guide</a> -- Look here when "it doesn't work"<br>
|
|||||||
<li><strong>PPPPPPPS</strong> ( or, Paul's Principles for Practical
|
<li><strong>PPPPPPPS</strong> ( or, Paul's Principles for Practical
|
||||||
Provision of Packet Processing with Shorewall ) <a
|
Provision of Packet Processing with Shorewall ) <a
|
||||||
href="http://linuxman.wikispaces.com/PPPPPPS">http://linuxman.wikispaces.com/PPPPPPS</a>
|
href="http://linuxman.wikispaces.com/PPPPPPS">http://linuxman.wikispaces.com/PPPPPPS</a>
|
||||||
-- Some very useful tips for dealing with Shorewall from Paul Gear<br>
|
-- Some very useful tips for dealing with Shorewall from Paul Gear</li>
|
||||||
</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
<div style="margin-left: 40px;">
|
|
||||||
<a href="2.0/">Shorewall 2.x Documentation</a> </div>
|
|
||||||
<br>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
Loading…
Reference in New Issue
Block a user