diff --git a/Shorewall-docs2/Documentation_Index.xml b/Shorewall-docs2/Documentation_Index.xml index 57fa4cc3f..fcaab95d4 100644 --- a/Shorewall-docs2/Documentation_Index.xml +++ b/Shorewall-docs2/Documentation_Index.xml @@ -15,7 +15,7 @@ - 2005-11-09 + 2005-11-16 2001-2005 @@ -407,6 +407,11 @@ MAC Verification + + Multiple Internet Connections from a + Single Firewall + + Multiple Zones Through One Interface diff --git a/Shorewall-docs2/MultiISP.xml b/Shorewall-docs2/MultiISP.xml new file mode 100644 index 000000000..1f1c55acc --- /dev/null +++ b/Shorewall-docs2/MultiISP.xml @@ -0,0 +1,412 @@ + + +
+ + + + Shorewall and Multiple Internet Connections + + + + Tom + + Eastep + + + + 2005-11-16 + + + 2005 + + Thomas M. Eastep + + + + Permission is granted to copy, distribute and/or modify this + document under the terms of the GNU Free Documentation License, Version + 1.2 or any later version published by the Free Software Foundation; with + no Invariant Sections, with no Front-Cover, and with no Back-Cover + Texts. A copy of the license is included in the section entitled + GNU Free Documentation + License. + + + +
+ Multiple Internet Connection Support in Shorewall 2.4.2 and + Later + + Beginning with Shorewall 2.3.2, support is included for multiple + internet connections. If you wish to use this feature, we recommend + strongly that you upgrade to version 2.4.2 or later. This section assumes + that you have so upgraded. + +
+ Overview + + Let's assume that a firewall is connected via two separate + ethernet interfaces to two different ISPs as in the following + diagram. + + + + + + eth0 connects to ISP1. The IP address of eth0 is + 206.124.146.176 and the ISP's gateway router has IP address + 206.124.146.254. + + + + eth1 connects to ISP 2. The IP address of eth1 is + 130.252.99.27 and the ISP's gateway router has IP address + 130.252.99.254. + + + + Each of these providers is described in an + entry in the file /etc/shorewall/providers. + + Entries in /etc/shorewall/providers can + specify that outgoing connections are to be load-balanced between the + two ISPs. Entries in /etc/shorewall/tcrules can be + used to direct particular outgoing connections to one ISP or the other. + Use of /etc/shorewall/tcrules is not required for + /etc/shorewall/providers to work, but you must + select a unique MARK value for each provider so Shorewall can set up the + correct marking rules for you. + + When using /etc/shorewall/providers, + connections from the internet are automatically routed back out of the + correct interface and through the correct ISP gateway. This works + whether the connection is handled by the firewall itself or if it is + routed or port-forwarded to a system behind the firewall. + + Shorewall will set up the routing and will update the + /etc/iproute2/rt_tables to include the table names + and number of the tables that it adds. + + + This feature uses packet + marking to control the routing. As a consequence, there are + some restrictions concerning entries in + /etc/shorewall/tcrules: + + + + Packet marking for traffic control purposes may not be done + in the PREROUTING table for connections involving providers with + 'track' specified (see below). + + + + You may not use the SAVE or RESTORE options. + + + + You may not use connection marking. + + + + + Use of this feature requires that your kernel and iptables support + CONNMARK target and conntrack match support. It does NOT require the + ROUTE target extension. + + + The current version of iptables (1.3.1) is broken with respect + to CONNMARK and iptables-save/iptables-restore. This means that if you + configure multiple ISPs, shorewall restore may + fail. If it does, you may patch your iptables using the patch at + http://shorewall.net/pub/shorewall/contrib/iptables/CONNMARK.diff. + + + The /etc/shorewall/providers file can also be + used in other routing scenarios. See the Squid documentation for an + example. +
+ +
+ /etc/shorewall/providers File + + Entries in this file have the following columns. As in all + Shorewall configuration files, enter "-" in a column if you don't want + to enter any value. + + + + NAME + + + The provider name. Must begin with a letter and consist of + letters and digits. The provider name becomes the name of the + generated routing table for this provider. + + + + + NUMBER + + + A number between 1 and 252. This becomes the routing table + number for the generated table for this provider. + + + + + MARK + + + A mark value used in your /etc/shorewall/tcrules file to + direct packets to this provider. Shorewall will also mark + connections that have seen input from this provider with this + value and will restore the packet mark in the PREROUTING + CHAIN. + + + + + DUPLICATE + + + Gives the name or number of a routing table to duplicate. + May be 'main' or the name or number of a previously declared + provider. For most applications, you want to specify 'main' + here. + + + + + INTERFACE + + + The name of the interface to the provider. + + + + + GATEWAY + + + The IP address of the provider's Gateway router. + + You can enter detect here + and Shorewall will attempt to automatically determine the gateway + IP address. + + Hint: "detect" is appropriate for use in cases + where the interface named in the INTERFACE column is dynamically + configured via DHCP etc. + + + + + OPTIONS + + + A comma-separated list from the following: + + + + track + + + If specified, connections FROM this interface are to + be tracked so that responses may be routed back out this + same interface. + + You want specify 'track' if internet hosts will be + connecting to local servers through this provider. Any time + that you specify 'track', you will also want to specify + 'balance' (see below). + + + + + balance + + + The providers that have 'balance' specified will get + outbound traffic load-balanced among them. Balancing will + not be perfect, as it is route based, and routes are cached. + This means that routes to often-used sites will always be + over the same provider. + + By default, each provider is given the same weight (1) + . Beginning with 2.4.0-RC3, you can change the weight of a + given provider by following balance + with "=" and the desired weight (e.g., balance=2). The + weights reflect the relative bandwidth of the providers + connections and should be small numbers since the kernel + actually creates additional default routes for each weight + increment. + + + + + loose + + + Do not include routing rules that force traffic whose + source IP is an address of the INTERFACE to be routed to + this provider. Useful for defining providers that are to be + used only when the appropriate packet mark is + applied. + + + + + + + + COPY + + + When you specify an existing table in the DUPLICATE column, + Shorewall copies all routes through the interface specified in the + INTERFACE column plus the interfaces listed in this column. At a + minumum, you should list all interfaces on your firewall in this + column except those internet interfaces specified in the INTERFACE + column of entries in this file. + + + +
+ +
+ What an entry in the Providers File Does + + Adding another entry in the providers file simply creates an + alternate routing table for you. In addition: + + + + Unless loose is specified, an + ip rule is generated for each IP address on the INTERFACE that + routes traffic from that address through the associated routing + table. + + + + If you specify track, then + connections which have had at least one packet arrive on the + interface listed in the INTERFACE column have their connection mark + set to the value in the MARK column. In the PREROUTING chain, + packets with that connmark have their packet mark set to that value; + packets so marked then bypass any prerouting rules that you create + in /etc/shorewall/tcrules. This ensures that + packets associated with connections from outside are always routed + out of the correct interface. + + + + If you specify balance, then + Shorewall will replace the 'default' route with weight 100 in the + 'main' routing table with a load-balancing route among those + gateways where balance was + specified. So if you configure default routes, be sure that their + weight is less than 100 or the route added by Shorewall will not be + used. + + + + That's all that these entries do. + You still have to follow the principle stated at the top of this + article: + + + + Routing determines where packets are to be sent. + + + + Once routing determines where the packet is to go, the + firewall (Shorewall) determines if the packet is allowed to go + there. + + + + The bottom line is that if you want traffic to go out through a + particular provider then you must mark that traffic + with the provider's MARK value in + /etc/shorewall/tcrules and you must do that marking + in the PREROUTING chain. + + + Entries in /etc/shorewall/providers + permanently alter your firewall/gateway's routing; that is, the effect + of these changes is not reversed by shorewall stop + or shorewall clear. To restore routing to its + original state, you will have to restart your network. This can + usually be done by /etc/init.d/network restart or + /etc/init.d/networking restart. Check your + distribution's networking documentation. + + You can mitigate the effect of the Shorewall-generated changes + to your routing table by specifying a metric for + each default route that you configure. Shorewall will generate a + load-balancing default route (assuming that balance has been specified for some of the + providers) that does not include a metric and that will therefore not + replace any existing route that has a non-zero metric. + +
+ +
+ Example + + The configuration in the figure at the top of this section would + be specified in /etc/shorewall/providers as + follows. Assume tht there is a single internal interface, eth2. + + #NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY +ISP1 1 1 main eth0 206.124.146.254 track,balance eth2 +ISP2 2 2 main eth1 130.252.99.254 track,balance eth2 + + Other configuration files go something like this: + + /etc/shorewall/interfaces: + + #ZONE INTERFACE BROADCAST OPTIONS +net eth0 detect … +net eth1 detect … + + /etc/shorewall/policy: + + #SOURCE DESTINATION POLICY LIMIT:BURST +net net DROP + + If you have masqueraded hosts, be sure to update + /etc/shorewall/masq to masquerade to both ISPs. For + example, if you masquerade all hosts connected to eth2 then: + + #INTERFACE SUBNET ADDRESS +eth0 eth2 206.124.146.176 +eth1 eth2 130.252.99.27 + + + Entries in /etc/shorewall/masq have no + effect on which ISP a particular connection will be sent through. That + is rather the purpuse of entries in + /etc/shorewall/tcrules. + + + Now suppose that you want to route all outgoing SMTP traffic from + your local network through ISP 2. You would make this entry in /etc/shorewall/tcrules (and you would + set TC_ENABLED=Yes in /etc/shorewall/shorewall.conf). + + #MARK SOURCE DEST PROTO PORT(S) CLIENT USER TEST +# PORT(S) +2:P <local network> 0.0.0.0/0 tcp 25 +
+
+
\ No newline at end of file diff --git a/Shorewall-docs2/Shorewall_and_Routing.xml b/Shorewall-docs2/Shorewall_and_Routing.xml index 61dda4229..3a078118d 100644 --- a/Shorewall-docs2/Shorewall_and_Routing.xml +++ b/Shorewall-docs2/Shorewall_and_Routing.xml @@ -212,373 +212,9 @@ Beginning with Shorewall 2.3.2, support is included for multiple internet connections. If you wish to use this feature, we recommend - strongly that you upgrade to version 2.4.2 or later. This section assumes - that you have so upgraded. + strongly that you upgrade to version 2.4.2 or later. -
- Overview - - Let's assume that a firewall is connected via two separate - ethernet interfaces to two different ISPs as in the following - diagram. - - - - - - eth0 connects to ISP1. The IP address of eth0 is - 206.124.146.176 and the ISP's gateway router has IP address - 206.124.146.254. - - - - eth1 connects to ISP 2. The IP address of eth1 is - 130.252.99.27 and the ISP's gateway router has IP address - 130.252.99.254. - - - - Each of these providers is described in an - entry in the file /etc/shorewall/providers. - - Entries in /etc/shorewall/providers can - specify that outgoing connections are to be load-balanced between the - two ISPs. Entries in /etc/shorewall/tcrules can be - used to direct particular outgoing connections to one ISP or the other. - Use of /etc/shorewall/tcrules is not required for - /etc/shorewall/providers to work, but you must - select a unique MARK value for each provider so Shorewall can set up the - correct marking rules for you. - - When using /etc/shorewall/providers, - connections from the internet are automatically routed back out of the - correct interface and through the correct ISP gateway. This works - whether the connection is handled by the firewall itself or if it is - routed or port-forwarded to a system behind the firewall. - - Shorewall will set up the routing and will update the - /etc/iproute2/rt_tables to include the table names - and number of the tables that it adds. - - - This feature uses packet - marking to control the routing. As a consequence, there are - some restrictions concerning entries in - /etc/shorewall/tcrules: - - - - Packet marking for traffic control purposes may not be done - in the PREROUTING table for connections involving providers with - 'track' specified (see below). - - - - You may not use the SAVE or RESTORE options. - - - - You may not use connection marking. - - - - - Use of this feature requires that your kernel and iptables support - CONNMARK target and conntrack match support. It does NOT require the - ROUTE target extension. - - - The current version of iptables (1.3.1) is broken with respect - to CONNMARK and iptables-save/iptables-restore. This means that if you - configure multiple ISPs, shorewall restore may - fail. If it does, you may patch your iptables using the patch at - http://shorewall.net/pub/shorewall/contrib/iptables/CONNMARK.diff. - - - The /etc/shorewall/providers file can also be - used in other routing scenarios. See the Squid documentation for an - example. -
- -
- /etc/shorewall/providers File - - Entries in this file have the following columns. As in all - Shorewall configuration files, enter "-" in a column if you don't want - to enter any value. - - - - NAME - - - The provider name. Must begin with a letter and consist of - letters and digits. The provider name becomes the name of the - generated routing table for this provider. - - - - - NUMBER - - - A number between 1 and 252. This becomes the routing table - number for the generated table for this provider. - - - - - MARK - - - A mark value used in your /etc/shorewall/tcrules file to - direct packets to this provider. Shorewall will also mark - connections that have seen input from this provider with this - value and will restore the packet mark in the PREROUTING - CHAIN. - - - - - DUPLICATE - - - Gives the name or number of a routing table to duplicate. - May be 'main' or the name or number of a previously declared - provider. For most applications, you want to specify 'main' - here. - - - - - INTERFACE - - - The name of the interface to the provider. - - - - - GATEWAY - - - The IP address of the provider's Gateway router. - - You can enter detect here - and Shorewall will attempt to automatically determine the gateway - IP address. - - Hint: "detect" is appropriate for use in cases - where the interface named in the INTERFACE column is dynamically - configured via DHCP etc. - - - - - OPTIONS - - - A comma-separated list from the following: - - - - track - - - If specified, connections FROM this interface are to - be tracked so that responses may be routed back out this - same interface. - - You want specify 'track' if internet hosts will be - connecting to local servers through this provider. Any time - that you specify 'track', you will also want to specify - 'balance' (see below). - - - - - balance - - - The providers that have 'balance' specified will get - outbound traffic load-balanced among them. Balancing will - not be perfect, as it is route based, and routes are cached. - This means that routes to often-used sites will always be - over the same provider. - - By default, each provider is given the same weight (1) - . Beginning with 2.4.0-RC3, you can change the weight of a - given provider by following balance - with "=" and the desired weight (e.g., balance=2). The - weights reflect the relative bandwidth of the providers - connections and should be small numbers since the kernel - actually creates additional default routes for each weight - increment. - - - - - loose - - - Do not include routing rules that force traffic whose - source IP is an address of the INTERFACE to be routed to - this provider. Useful for defining providers that are to be - used only when the appropriate packet mark is - applied. - - - - - - - - COPY - - - When you specify an existing table in the DUPLICATE column, - Shorewall copies all routes through the interface specified in the - INTERFACE column plus the interfaces listed in this column. At a - minumum, you should list all interfaces on your firewall in this - column except those internet interfaces specified in the INTERFACE - column of entries in this file. - - - -
- -
- What an entry in the Providers File Does - - Adding another entry in the providers file simply creates an - alternate routing table for you. In addition: - - - - Unless loose is specified, an - ip rule is generated for each IP address on the INTERFACE that - routes traffic from that address through the associated routing - table. - - - - If you specify track, then - connections which have had at least one packet arrive on the - interface listed in the INTERFACE column have their connection mark - set to the value in the MARK column. In the PREROUTING chain, - packets with that connmark have their packet mark set to that value; - packets so marked then bypass any prerouting rules that you create - in /etc/shorewall/tcrules. This ensures that - packets associated with connections from outside are always routed - out of the correct interface. - - - - If you specify balance, then - Shorewall will replace the 'default' route with weight 100 in the - 'main' routing table with a load-balancing route among those - gateways where balance was - specified. So if you configure default routes, be sure that their - weight is less than 100 or the route added by Shorewall will not be - used. - - - - That's all that these entries do. - You still have to follow the principle stated at the top of this - article: - - - - Routing determines where packets are to be sent. - - - - Once routing determines where the packet is to go, the - firewall (Shorewall) determines if the packet is allowed to go - there. - - - - The bottom line is that if you want traffic to go out through a - particular provider then you must mark that traffic - with the provider's MARK value in - /etc/shorewall/tcrules and you must do that marking - in the PREROUTING chain. - - - Entries in /etc/shorewall/providers - permanently alter your firewall/gateway's routing; that is, the effect - of these changes is not reversed by shorewall stop - or shorewall clear. To restore routing to its - original state, you will have to restart your network. This can - usually be done by /etc/init.d/network restart or - /etc/init.d/networking restart. Check your - distribution's networking documentation. - - You can mitigate the effect of the Shorewall-generated changes - to your routing table by specifying a metric for - each default route that you configure. Shorewall will generate a - load-balancing default route (assuming that balance has been specified for some of the - providers) that does not include a metric and that will therefore not - replace any existing route that has a non-zero metric. - -
- -
- Example - - The configuration in the figure at the top of this section would - be specified in /etc/shorewall/providers as - follows. Assume tht there is a single internal interface, eth2. - - #NAME NUMBER MARK DUPLICATE INTERFACE GATEWAY OPTIONS COPY -ISP1 1 1 main eth0 206.124.146.254 track,balance eth2 -ISP2 2 2 main eth1 130.252.99.254 track,balance eth2 - - Other configuration files go something like this: - - /etc/shorewall/interfaces: - - #ZONE INTERFACE BROADCAST OPTIONS -net eth0 detect … -net eth1 detect … - - /etc/shorewall/policy: - - #SOURCE DESTINATION POLICY LIMIT:BURST -net net DROP - - If you have masqueraded hosts, be sure to update - /etc/shorewall/masq to masquerade to both ISPs. For - example, if you masquerade all hosts connected to eth2 then: - - #INTERFACE SUBNET ADDRESS -eth0 eth2 206.124.146.176 -eth1 eth2 130.252.99.27 - - - Entries in /etc/shorewall/masq have no - effect on which ISP a particular connection will be sent through. That - is rather the purpuse of entries in - /etc/shorewall/tcrules. - - - Now suppose that you want to route all outgoing SMTP traffic from - your local network through ISP 2. You would make this entry in /etc/shorewall/tcrules (and you would - set TC_ENABLED=Yes in /etc/shorewall/shorewall.conf). - - #MARK SOURCE DEST PROTO PORT(S) CLIENT USER TEST -# PORT(S) -2:P <local network> 0.0.0.0/0 tcp 25 -
+ Shorewall multi-ISP support is now covered in a separate article. \ No newline at end of file