Re: [LARTC] Route based on port / protocol

2004-11-26 Thread Chris Bennett
Title: Mensagem



My solution to this exact problem isn't 
exactly what you asked for, but I'll tell you anyway because it turned out to be 
s easy and work s well.
 
On my LAN I created a /23 subnet.  For 
example, lets say it is 192.168.2.0/23, giving us 192.168.2.0 - 
192.168.3.255.  I then made all IPs in the lower half of the subnet 
(192.168.2.0/24) access the internet through ISP-1, and all the IPs in the upper 
half of the subnet (192.168.3.0/24) access the internet through 
ISP-2.
 
Then I multi-homed my servers, so one 
server might have, for example, the IPs 192.168.2.2 and 
192.168.3.2.   After that, directing traffic for a particular service 
is as simple as specifying which IP to use for the service (instead of allowing 
the service to use ALL IPs).  I haven't yet run into a service that 
wouldn't allow me to do this.
 
That's about it.
 
Btw, when setting up filters and such for a 
particular machine, I can use a netmask of the form 255.255.254.255 so that both 
of the IPs are handled in one rule...
 
There may be a better way to do this that 
more closely matches what you are trying to do with specific ports and such.. 
but this multi-homing approach is working great for me.
 
Chris

  - Original Message - 
  From: 
  Antonio Luiz 
  To: [EMAIL PROTECTED] 
  Sent: Thursday, November 25, 2004 2:08 
  PM
  Subject: [LARTC] Route based on port / 
  protocol
  
  
  I have a Linux Box 
  with 3 NIC's connected to 2 different ISP's running a Proxy (Squid) and E-mail 
  server (QMail).
    
  
    
  |     |-- 
  x.x.x.1  x.x.x.2 (ISP-1 gateway)
    
  |   Squid  |
  LAN --- 
  10.85.1.85 --|   
    |
  
    
  |  Qmail  |
  
    
  |     |-- 
  y.y.y.1  y.y.y.2 (ISP-2 gateway)
    --
   
  All is running OK. 
  But now, I want do redirect all traffic from Squid (http) to 
  ISP-1 and all traffic from QMail (smtp) to ISP-2.
  Anyone can help me 
  ?
   
   
  I've already tried 
  this, but no success:
   
    # Create two tables (21 and 31) 
  to use with each connection 
  
    # Copy main route to table 
  31
  ip route show 
  table main | grep -Ev ^default | \   while read ROUTE ; do 
  \ ip route add table 31 $ROUTE; 
  \   done
    # use 
  ISP-1 as default gateway for table 31ip route replace default via 
  x.x.x.2 table 31
  
    # Copy main route to table 
  21
  ip route show 
  table main | grep -Ev ^default | \   while read ROUTE ; do 
  \ ip route add table 21 $ROUTE; 
  \   done
    # use 
  ISP-2 as default gateway for table 21ip route replace default via 
  y.y.y.2 table 21
     # Mark packages (1 or ISP-1 e 2 for 
  ISP-2)
     # here, I've tried to 
  change OUTPUT for POSTROUTING and PREROUTING without 
  success
  
  iptables -t mangle 
  -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1
  
  iptables -t mangle 
  -A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
   
    # Define 
  rules to use the correct connection
  ip rule add from 
  x.x.x.1 table 31
  ip rule add fwmark 
  1 table 31
   
  ip rule add from 
  y.y.y.1 table 21
  ip rule add fwmark 
  2 table 21
   
   
   
  Antonio Luiz 
   


[LARTC] Route based on port / protocol

2004-11-25 Thread Antonio Luiz
Title: Mensagem




I have a Linux Box 
with 3 NIC's connected to 2 different ISP's running a Proxy (Squid) and E-mail 
server (QMail).
  

  
|     |-- x.x.x.1 
 x.x.x.2 (ISP-1 gateway)
  
|   Squid  |
LAN --- 
10.85.1.85 --|   
  |

  
|  Qmail  |

  
|     |-- y.y.y.1 
 y.y.y.2 (ISP-2 gateway)
  --
 
All is running OK. 
But now, I 
want do redirect all traffic from Squid (http) to ISP-1 and all traffic from 
QMail (smtp) to ISP-2.
Anyone can help me 
?
 
 
I've already tried 
this, but no success:
 
  # Create two tables (21 and 31) to 
use with each connection 

  # Copy main route to 
table 31
ip route show table 
main | grep -Ev ^default | \   while read ROUTE ; do 
\ ip route add table 31 $ROUTE; 
\   done
  # use 
ISP-1 as default gateway for table 31ip route replace default via 
x.x.x.2 table 31

  # Copy main route to 
table 21
ip route show table 
main | grep -Ev ^default | \   while read ROUTE ; do 
\ ip route add table 21 $ROUTE; 
\   done
  # use 
ISP-2 as default gateway for table 21ip route replace default via 
y.y.y.2 table 21
   # Mark packages (1 
or ISP-1 e 2 for ISP-2)
   # here, I've tried to change 
OUTPUT for POSTROUTING and PREROUTING without success

iptables -t mangle 
-A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1

iptables -t mangle 
-A OUTPUT -p tcp --dport 25 -j MARK --set-mark 2
 
  # Define 
rules to use the correct connection
ip rule add from 
x.x.x.1 table 31
ip rule add fwmark 1 
table 31
 
ip rule add from 
y.y.y.1 table 21
ip rule add fwmark 2 
table 21
 
 
 
Antonio Luiz