Jeff Croft wrote:
I'm configuring FreeBSD 7.1 as a router/load-balancer and I just got
stuck. I know this sounds like a newbie question, but hear me out.
I have three DSL line (AT&T in SF Bay Area, business class) connected
via ethernet to the box, and one more ethernet connected to an internal
network. The idea is to do some clever kind of load-balancing and/or
logging of DSL connections using pf.
All three DSL lines are configured to use PPPoE. I can successfully
bring any one of them up individually, but when I try to bring more than
one up, using either ppp or mpd5, I get an error that looks like this
(example from ppp):
ppp : tun0: Warning: iface add: ioctl(SIOCAIFADDR, X.X.X.X -> D.D.D.D
): File exists
and then the 2nd link goes down. mpd5 says the same thing, but the error
is slightly different. For all three point-to-point links the remote
side of the point to point (D.D.D.D) is always the same IP address, so
naturally it doesn't want to add multiple routing table entries which
point to the same destination.
The vendor claims to be unable to change the value of D.D.D.D because
"everyone in your region has the same remote address." They also don't
support mlppp, so multilink is out.
Did you try multilink PPP? they might not support, but it may work
Also, I would like easy, real-time, programmatic access to the IP
address of each individual DSL line.
So far, I've thought of the following workarounds:
1. Use cheap linksys boxen to hang off each DSL line so the FreeBSD
network stack doesn't have to do the PPPoE. I'm concerned that they'll
be able to handle the volume of individual connections I'm planning on,
even with the firmware replaced with something decent. Plus it's three
extra devices on my network!
2. Use network virtualization such as this. I don't have any experience
with it, but I'm guessing it would do everything I want.
Does anyone have any ideas how to solve this problem more elegantly?
Not elegantly, but you can change the remote peer address to something
else. That is:
1) Bring up tun0, you get from IPCP 220.127.116.11 -> 18.104.22.168
ifconfig tun0 22.214.171.124 126.96.36.199
2) Bring up tun1, you get 188.8.131.52 -> 184.108.40.206
ifconfig tun1 220.127.116.11 18.104.22.168
3) Bring up tun2, you get 22.214.171.124 -> 126.96.36.199
The result will be:
tun0 188.8.131.52 184.108.40.206
tun1 220.127.116.11 18.104.22.168
tun2 22.214.171.124 126.96.36.199
You'll need to write a custom script, to modify
the addresses, I think both ppp and mpd can do that.
Are you going to use pf's route-to to forward packets
to all three interfaces? Since, the above hack doesn't
"solve" the next hop problem. You can only have one
next hop for each destination. On -CURRENT there is
support for ECMP, which may be a complete and correct
solution for this problem.
email@example.com mailing list
To unsubscribe, send any mail to "freebsd-questions-unsubscr...@freebsd.org"