Hello Hasso and Andrea,
We've gotten a little far afield from Neil Horman's initial question about
why there are primary and secondary IPs, and I can't address your concern
Andrea about the (route cache?) 500ms latency between the time that an
address is added (or removed) from an interface and the time that the
address is actually used. Even so, the Linux routing code allows the
kernel to suggest an IP with the "src" keyword.
: > Why change the primary address? What is wrong with simply changing the
: > route to use the other source IP?
:
: There is no support for it in most of user space software.
: None of the routing protocols suites support it etc.
Though some software provides support for explicit configuration of source
address for initiated sockets, you can use INADDR_ANY and let the kernel
perform source address selection for you.
Linux select an IP based on the routing table. [0] Example:
# ip route show 192.168.90.0/24
192.168.90.0/24 dev eth0 scope link src 192.168.90.250
# ip route change 192.168.88.0/24 dev eth0 scope link src $SECONDARY
If you want to be fancy about it, you can have a higher preference routing
table (make sure there's an entry in /etc/iproute2/rt_tables for
$SECONDARY_TABLE). Then you can add and remove tables in this routing
table instead of changing the route in the main routing table.
# ip rule add prio table $SECONDARY_TABLE
# ip route add table $SECONDARY_TABLE $DESTNET dev $REALDEV src $SECONDARY
Best of luck!
-Martin
[0] http://linux-ip.net/gl/ip-cref/node155.html
--
Martin A. Brown --- SecurePipe, Inc. --- mabrown@xxxxxxxxxxxxxx
|