Hello list,
I want a set-up with a satellite link (eth0) and a cellular cdma
link (ppp0) coming into a linux box with a LAN (eth1 or wlan0)
to be able to route first through the satellite when it''s on, or
else the cdma when it''s in range. Load sharing is not critical,
but it would be nice. The satellite has a static IP, the cdma
is dynamic. Both WANs are NAT''d public IPs. The private LAN
will be SNAT''d or MASQ''d for access to the internet.
To simplify the situation, I''m simulating the real situation with
three ethX''s. I have two independant ISPs (static public IPs) and
a linux laptop connected via cross-over to the LAN interface.
This is not a new question, but I have done this:
I checked the mailing list archives, applied the patches
[http://www.ssi.bg/~ja/#routes-2.4]
to a 2.4.26 kernel, and read (and applied) the commands from
[http://www.ssi.bg/~ja/nano.txt],
and set up a bash script to ping via my two WAN interfaces once
per minute.
But I''ve done something wrong, obviously(?).
I suspect a typo or other oversight, but haven''t found it yet.
Here are my settings:
root@scyther:~# uname -a
Linux scyther 2.4.26 #2 Fri Apr 16 18:17:31 EDT 2004 i586 unknown unknown
GNU/Linux
root@scyther:~# lsmod
Module Size Used by Not tainted
ipt_state 472 2 (autoclean)
iptable_nat 16280 1 (autoclean)
ip_conntrack 19944 0 (autoclean) [ipt_state iptable_nat]
iptable_filter 1612 1 (autoclean)
8139too 13576 1
mii 2304 0 [8139too]
tulip 40832 2
root@scyther:~# ip addr
1: lo: <LOOPBACK,UP> mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 brd 127.255.255.255 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:80:c8:f8:24:1d brd ff:ff:ff:ff:ff:ff
inet aa.bb.23.183/27 brd aa.bb.23.195 scope global eth0
3: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:80:c8:f8:24:1e brd ff:ff:ff:ff:ff:ff
inet cc.dd.69.83/27 brd cc.dd.69.95 scope global eth1
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 00:80:c8:f8:24:1f brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop qlen 1000
link/ether 00:80:c8:f8:24:20 brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:e0:f4:11:52:43 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.1/24 brd 192.168.10.255 scope global eth4
root@scyther:~# ip rule
0: from all lookup local
50: from all lookup main
201: from aa.bb.23.160/27 lookup 201
202: from cc.dd.69.83/27 lookup 202
222: from all lookup 222
32766: from all lookup main
32767: from all lookup default
root@scyther:~# ip route
aa.bb.23.160/27 dev eth0 proto kernel scope link src aa.bb.23.183
cc.dd.69.64/27 dev eth1 proto kernel scope link src cc.dd.69.83
192.168.10.0/24 dev eth4 proto kernel scope link src 192.168.10.1
root@scyther:~# ip route show table 201
default via aa.bb.23.161 dev eth0 proto static src aa.bb.23.183
prohibit default proto static metric 1
root@scyther:~# ip route show table 202
default via cc.dd.69.94 dev eth1 proto static src cc.dd.69.83
prohibit default proto static metric 1
root@scyther:~# ip route show table 222
default proto static
nexthop via aa.bb.23.161 dev eth0 weight 1
nexthop via cc.dd.69.94 dev eth1 weight 1
root@scyther:~# cat ping-daemon.sh
#!/bin/sh
#
# ping on interfaces to keep kernel happy
#
while : ; do
ping -c 1 aa.bb.23.161 > /dev/null 2>&1
ping -c 1 cc.dd.69.94 > /dev/null 2>&1
sleep 60
done
root@scyther:~#
root@scyther:~# iptables -v -L
Chain INPUT (policy ACCEPT 1251 packets, 83120 bytes)
pkts bytes target prot opt in out source destination
10141 1037K keep_state all -- any any anywhere anywhere
Chain FORWARD (policy ACCEPT 824 packets, 68747 bytes)
pkts bytes target prot opt in out source destination
1416 142K keep_state all -- any any anywhere anywhere
Chain OUTPUT (policy ACCEPT 7859 packets, 653K bytes)
pkts bytes target prot opt in out source destination
16864 1625K keep_state all -- any any anywhere anywhere
Chain keep_state (3 references)
pkts bytes target prot opt in out source destination
18487 2000K ACCEPT all -- any any anywhere anywhere
state RELATED,ESTABLISHED
9934 804K RETURN all -- any any anywhere anywhere
root@scyther:~# iptables -v -L -t nat
Chain PREROUTING (policy ACCEPT 1391 packets, 78477 bytes)
pkts bytes target prot opt in out source destination
1391 78477 keep_state all -- any any anywhere anywhere
Chain POSTROUTING (policy ACCEPT 7246 packets, 608K bytes)
pkts bytes target prot opt in out source destination
3 227 SNAT all -- any eth0 invalid.168.192.in-addr.arpa/24
anywhere to:aa.bb.23.183
209 17307 SNAT all -- any eth1 invalid.168.192.in-addr.arpa/24
anywhere to:cc.dd.69.83
7246 608K keep_state all -- any any anywhere anywhere
Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 keep_state all -- any any anywhere anywhere
Chain keep_state (3 references)
pkts bytes target prot opt in out source destination
0 0 ACCEPT all -- any any anywhere anywhere
state RELATED,ESTABLISHED
8637 687K RETURN all -- any any anywhere anywhere
root@scyther:~#
From the laptop on the private network, I can ping both WAN interfaces,
but only can ping out through one of them (currently cc.dd). I can browse to
the internet, but if I pull the cable on the interface, I don''t seem
to
switch to the other. What should I be checking for to figure this out.
Thanks for any help.
--
Bob Beers
_______________________________________________
LARTC mailing list / LARTC@mailman.ds9a.nl
http://mailman.ds9a.nl/mailman/listinfo/lartc HOWTO: http://lartc.org/