Re: snat to multiple source ip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Edmundo Carmona wrote:

> You are using multiroute path, right?

This is my firewall/proxy schema:


        +---------+
        |         |
        |         |              ---HDSL
        |         |             /
Private |firewall |            /
--------+         +---eth0----+-----adslA
network |   &     |            \
        | Squid   |             \
        |         |              ---adslB
        |         |
        +---------+


> what is the output of

> ip route show default

> (on the router, of course).

Here is:

hdsl_default_gateway_ip dev eth0  scope link
adslB_network dev eth0  proto kernel  scope link  src adslB_ip
adslA_network dev eth0  proto kernel  scope link  src adslA_ip
hdsl_network dev eth1  scope link
my_private_network dev eth2  proto kernel  scope link  src
linux_private_ip
127.0.0.0/8 dev lo  scope link
default via hdsl_default_gateway_ip dev eth0  metric 1

Then I run this script to add ip & gw for adsl connections:

$IP address add $ip_adsl_a/$netmask_adsl_a brd + dev eth0 label
eth0:adslA
$IP address add $ip_adsl_b/$netmask_adsl_b brd + dev eth0 label
eth0:adslB

$IP route add $adsl_network_a dev eth0 src $ip_adsl_a table adslA
$IP route add default via $GW_adsl_a table adslA
$IP route add $adsl_network_b dev eth0 src $ip_adsl_b table adslB
$IP route add default via $GW_adsl_b table adslB

$IP route add $adsl_network_a dev eth0 src $ip_adsl_a table adsl
$IP route add $adsl_network_b dev eth0 src $ip_adsl_b table adsl
$IP route add default equalize table adsl \
             nexthop dev eth0 via $GW_adsl_a weight 1 \
             nexthop dev eth0 via $GW_adsl_b weight 1

$IP rule add fwmark 1 table adsl priority 400
[firewall mark packets so they are going to this routing table]

However routing and SNAT should not be related.
My question is the following.
How does SNAT work when multiple ip are specified?

iptables -t nat -I POSTROUTING -s ipX --protocol tcp
-j SNAT --to first_ip --to second_ip

Why everytime I connect to www.dnsstuff.com I get always the
first_ip? And after refreshing show me the second ip?
I *think* that the round robin cycle works on a per socket/per host
couple.
Example:

1st socket opened to a.a.a.a  -->> SNAT with first_ip
2nd socket opened to b.b.b.b  -->> SNAT with first_ip
3rd socket opened to c.c.c.c  -->> SNAT with first_ip
4th socket opened to b.b.b.b  -->> SNAT with second_ip
5th socket opened to d.d.d.d  -->> SNAT with first_ip
6th socket opened to a.a.a.a  -->> SNAT with second_ip

Can anyone confirm this? Wrong or correct?



[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux