домашняя сетка
стоит Ubuntu 10.04.3 LTS
получаем инет по 2 каналам:
1. с 20-00 до 8-00 и по праздникам c спутника- статика eth0 вход 1Мб отдача 64к
2. 3G модем - динамический ip (Gateway тоже меняеться) по ppp0,подымается (при загрузке и обрыве) автоматически wvdial вход приблизительно 1-2М отдача около 0,6М
оба канала переодически падают(3-5раз в сутки)
задача - по eth1 разбрасывать инет со всеми сервисами (isq,scype,msn,качалку торрентов и т.д.) по дому, по возможности по максимуму использовать оба канала
уровень новичка (может быть продвинутого) - всё это строилось путём нахождения в инет решений и применений по месту
в /etc/sysctl.conf раскомментирована строчка net.ipv4.ip_forward=1
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ether
iface eth0 inet static
gateway 10.15.1.1
address 10.15.1.2
netmask 255.255.255.248
auto eth1
iface eth1 inet static
address 192.168.0.1
netmask 255.255.255.0
iface ppp0 inet wvdial
provider wvdial
auto ppp0
ifconfig
eth0 Link encap:Ethernet HWaddr 00:25:86:e6:a2:1a
inet addr:10.15.1.2 Bcast:10.15.1.7 Mask:255.255.255.248
inet6 addr: fe80::225:86ff:fee6:a21a/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5325 errors:0 dropped:0 overruns:0 frame:0
TX packets:7396 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:756727 (756.7 KB) TX bytes:545320 (545.3 KB)
Interrupt:17 Base address:0xdc00
eth1 Link encap:Ethernet HWaddr 00:26:18:db:cd:22
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::226:18ff:fedb:cd22/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26187 errors:0 dropped:0 overruns:0 frame:0
TX packets:22713 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3188650 (3.1 MB) TX bytes:10246959 (10.2 MB)
Interrupt:26 Base address:0xa000
lo Link encap:Локальная петля (Loopback)
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:21355 errors:0 dropped:0 overruns:0 frame:0
TX packets:21355 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:7913695 (7.9 MB) TX bytes:7913695 (7.9 MB)
ppp0 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:31.40.224.124 P-t-P:10.112.0.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:23823 errors:1 dropped:0 overruns:0 frame:0
TX packets:25206 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:9806404 (9.8 MB) TX bytes:2672799 (2.6 MB)
netstat -rn (сейчас канал eth0 лежит)
Таблица маршутизации ядра протокола IP
Destination Gateway Genmask Flags MSS Window irtt Iface
10.15.1.0 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
10.112.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0
10.15.1.0 0.0.0.0 255.255.255.248 U 0 0 0 eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
0.0.0.0 10.112.0.1 0.0.0.0 UG 0 0 0 ppp0
на данный момент запускаю с rc.local скрипт check.sh
check.sh
#!/bin/bash
. /etc/balance/vars
OLDIF1=0
OLDIF2=0
. /etc/balance/routing.sh
while true; do
. /etc/balance/vars
ping -c 3 -s 100 $P1 -I $IF1 > /dev/null
if [ $? -ne 0 ]; then
echo "Failed IF1!"
NEWIF1=0
else
NEWIF1=1
fi
# 80.*.*.3 - это DNS провайдера eth0
ping -c 3 -s 100 80.*.*.3 -I $IF2 > /dev/null
if [ $? -ne 0 ]; then
echo "Failed IF2!"
NEWIF2=0
else
NEWIF2=1
fi
if (( ($NEWIF1!=$OLDIF1) || ($NEWIF2!=$OLDIF2) )); then
echo "Changing routes"
if (( ($NEWIF1==1) && ($NEWIF2==1) )); then
echo "Both channels"
ip route delete default
ip route delete default
ip route delete default
ip route add default scope global nexthop via $P1 dev $IF1 weight $W1 \
nexthop via $P2 dev $IF2 weight $W2
elif (( ($NEWIF1==1) && ($NEWIF2==0) )); then
echo "First channel"
ip route delete default
ip route delete default
ip route delete default
ip route add default via $P1 dev $IF1
elif (( ($NEWIF1==0) && ($NEWIF2==1) )); then
echo "Second channel"
ip route delete default
ip route delete default
ip route delete default
ip route add default via $P2 dev $IF2
fi
else
echo "Not changed"
fi
OLDIF1=$NEWIF1
OLDIF2=$NEWIF2
sleep 3
done
routing.sh
. /etc/balance/vars
ip route add $P1_NET dev $IF1 src $IP1 table $TBL1 > /dev/null 2>&1
ip route add default via $P1 table $TBL1 > /dev/null 2>&1
ip route add $P2_NET dev $IF2 src $IP2 table $TBL2 > /dev/null 2>&1
ip route add default via $P2 table $TBL2 > /dev/null 2>&1
ip route add $P1_NET dev $IF1 src $IP1 > /dev/null 2>&1
ip route add $P2_NET dev $IF2 src $IP2
ip route add default via $P1 > /dev/null 2>&1
ip rule add from $IP1 table $TBL1 > /dev/null 2>&1
ip rule add from $IP2 table $TBL2 > /dev/null 2>&1
ip route add $P0_NET dev $IF0 table $TBL1 > /dev/null 2>&1
ip route add $P2_NET dev $IF2 table $TBL1 > /dev/null 2>&1
ip route add 127.0.0.0/8 dev lo table $TBL1 > /dev/null 2>&1
ip route add $P0_NET dev $IF0 table $TBL2 > /dev/null 2>&1
ip route add $P1_NET dev $IF1 table $TBL2 > /dev/null 2>&1
ip route add 127.0.0.0/8 dev lo table $TBL2 > /dev/null 2>&1
vars
#!/bin/bash
# LAN interface
IF0="eth1"
# WAN interface 1
IF1="ppp0"
# WAN interface 2
IF2="eth0"
IP1="`ip addr show $IF1 | grep inet | awk '{print $2}'`"
IP2="10.15.1.2"
# gateway 1
P1="`ifconfig ppp0 | awk '/P-t-P:/{gsub(/[^0-9\.]/,"",$3); print $3}'`"
# gateway 2
P2="10.15.1.1"
# LAN netmask
P0_NET="192.168.0.0/24"
# WAN1 netmask
# P1_NET="ifconfig ppp0 | awk '/Mask:/{gsub(/[^0-9\.]/,"",$4); print $4}'"
P1_NET="`ip addr show ppp0 | grep inet | awk '{print $4}'`"
# P1_NET="10.0.0.0/8"
# WAN2 netmask
P2_NET="10.15.1.0/32"
TBL1=CDMA
TBL2=BOOM
# Realtive weight of channels bandwidth
W1="2"
W2="1"
на сервере стоит squid3,dnsmasq,clamav havp,samba, ufw /etc/ufw/before.rules
# Табица NAT
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
#Очистка
-F PREROUTING
-F POSTROUTING
# включаем трансляцию из сети 192.168.0.0 через интерфейс подключенный к интернету (eth1)
-A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
-A POSTROUTING -s 192.168.0.0/24 -o ppp0 -j MASQUERADE
# NAT клиентов различных IM сетей, ICQ, Jabber, Mail.Ru
-A POSTROUTING -p tcp -m tcp -m multiport -s 192.168.0.0/255.255.255.0 -o eth1 -j MASQUERADE --dports 5190,5222,5223,2041,2042
-A POSTROUTING -p tcp -m tcp -m multiport -s 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE --dports 5190,5222,5223,2041,2042
# перенаправление. все http запросы на порт прокси (прозрачный прокси)
-A PREROUTING -s 192.168.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
# iptables -t nat -A PREROUTING -i ppp0 ! -d 192.168.0.0/24 -p tcp -m multiport --dport 80,8080 -j DNAT --to 192.168.0.1:3128
# don't delete the 'COMMIT' line or these nat table rules won't be processed
COMMIT
в /etc/default/ufw применена строка DEFAULT_FORWARD_POLICY="ACCEPT"
ps может создать нову тему?(эту начал не я, у меня похожая проблема была)