Есть cервак (ubuntu 10.04) на него заведены 2 канала (VPN подключение)
схема
пров 1 <------>|
| 20mbit/s
|<---------> (ppp0)
5mbit/s ubuntu (br0)<------------>оффтопик
|<---------> (ppp1)
|
пров 2 <------>| задача: 1.сделать доступ на убунту одновременно с двух прово (решена)
2.выводить софтопика через 2 провов с балансировкой (решена)
3.переключение на оставшевогося в случаи падения другово (решена)
4.прокинуть внуть сервисы до оффтпика(в часности VPN (pptp)) (решена частично)
Вопрос по 4 пункту - сервисы вроде прокинул но есть 1 небольшое но - когда подняты оба вровайдера - подсоединяюсь через ip первого провайдера и смотрю через tcpdump -i ppp0 -n proto GRE все в поорядке вижу прием и ответ через этот интерфейс все пакеты нормально отрабатывают SNAT + DNAT. а вот когда подсоединясь через другово провайдера (соединение устанавливаеться и работает) то в ходящие вижу на PPP1 а исходящие вижу только на PPP0 но с DNAT от воторого провайдера. Не пойму где "косяк"
server:~# ip route list
172.30.96.1 dev ppp1 proto kernel scope link src b.b.b.b
85.21.0.212 via 10.207.32.1 dev vlan2 src 10.207.38.55 //vpn сервер первого прова
192.168.237.2 dev vlan3 scope link src 192.168.237.110 //vnp сервер второго прова
192.168.69.0/24 dev br0 proto kernel scope link src 192.168.69.1 //локальная сетка
192.168.237.0/24 dev vlan3 proto kernel scope link src 192.168.237.110 //сетка второго прова
10.207.32.0/21 dev vlan2 proto kernel scope link src 10.207.38.55 //локалка моего сегмента первого прова
10.0.0.0/8 via 10.207.32.1 dev vlan2 // маршрут до все локалки первого прова
default
nexthop dev ppp0 weight 8 // первый пров
nexthop dev ppp1 weight 2 // второй пров
server:~# ip rule list
0: from all lookup local
101: from all fwmark 0x1 lookup corbinawan //первый пров
201: from all fwmark 0x2 lookup 2komwan //второй пров
32766: from all lookup main
32767: from all lookup default
server:~# ip route list table corbinawan
192.168.69.0/24 dev br0 scope link
127.0.0.0/8 dev lo scope link
default dev ppp0 scope link
server:~# ip route list table 2komwan
192.168.69.0/24 dev br0 scope link
127.0.0.0/8 dev lo scope link
default dev ppp1 scope link
(показываю только то что относиться к данному воросу)
server:~# iptables-save
# Generated by iptables-save v1.4.4 on Mon Nov 8 13:13:38 2010
*filter
:INPUT DROP [2370094:134130146]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [273336903:395120712083]
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br0 -o br0 -j ACCEPT
-A FORWARD -s 192.168.69.0/24 -i br0 -j ACCEPT
-A FORWARD -d 192.168.69.2/32 -i ppp+ -p tcp -m tcp --dport 1723 -j ACCEPT
COMMIT
# Completed on Mon Nov 8 13:13:38 2010
# Generated by iptables-save v1.4.4 on Mon Nov 8 13:13:38 2010
*nat
:PREROUTING ACCEPT [1923691:174890958]
:POSTROUTING ACCEPT [1116756:98145832]
:OUTPUT ACCEPT [1104886:97539420]
-A PREROUTING -i ppp+ -p tcp -m tcp --dport 1723 -j DNAT --to-destination 192.168.69.2:1723
-A POSTROUTING -s 192.168.69.0/24 -m connmark --mark 0x1 -j SNAT --to-source a.a.a.a
-A POSTROUTING -s 192.168.69.0/24 -m connmark --mark 0x2 -j SNAT --to-source b.b.b.b
COMMIT
# Completed on Mon Nov 8 13:13:38 2010
# Generated by iptables-save v1.4.4 on Mon Nov 8 13:13:38 2010
*mangle
:PREROUTING ACCEPT [235052702:15306323952]
:INPUT ACCEPT [233638986:14683333737]
:FORWARD ACCEPT [1324505:613850394]
:OUTPUT ACCEPT [141030691:179282896874]
:POSTROUTING ACCEPT [274668639:395735869774]
-A INPUT -i br+ -j CONNMARK --set-xmark 0x8/0xffffffff
-A INPUT -i ppp1 -j CONNMARK --set-xmark 0x2/0xffffffff
-A INPUT -i ppp0 -j CONNMARK --set-xmark 0x1/0xffffffff
-A FORWARD -i br+ -j CONNMARK --set-xmark 0x8/0xffffffff
-A FORWARD -o ppp1 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i ppp1 -j CONNMARK --set-xmark 0x2/0xffffffff
-A FORWARD -o ppp1 -j CONNMARK --set-xmark 0x2/0xffffffff
-A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
-A FORWARD -i ppp0 -j CONNMARK --set-xmark 0x1/0xffffffff
-A FORWARD -o ppp0 -j CONNMARK --set-xmark 0x1/0xffffffff
-A OUTPUT -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A OUTPUT -m mark ! --mark 0x0 -j ACCEPT
COMMIT
# Completed on Mon Nov 8 13:13:38 2010
Вот собственно настройки. Если надо что то есчо скажите
conntrack -F и ip route flush cache
соответственно делал всегда при всех изменениях (на всякий случай)
server:~# tcpdump -i ppp0 -n proto GRE
13:07:49.597966 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 75, ack 126, length 93: compressed PPP data
13:08:26.428499 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 76, ack 127, length 139: compressed PPP data
13:11:08.429503 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 77, length 92: compressed PPP data
13:11:16.619174 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 78, length 93: compressed PPP data
13:11:34.160969 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 79, ack 130, length 96: compressed PPP data
13:12:49.965872 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 80, length 255: compressed PPP data
13:16:34.217800 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 81, ack 132, length 96: compressed PPP data
13:17:49.750657 IP b.b.b.b > 89.175.163.34: GREv1, call 59501, seq 82, ack 133, length 93: compressed PPP data
server:~# tcpdump -i ppp1 -n proto GRE
13:07:49.706731 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 75, no-payload, length 12
13:08:26.426685 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 127, length 81: compressed PPP data
13:08:26.539533 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 76, no-payload, length 12
13:11:08.246677 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 128, length 76: compressed PPP data
13:11:08.539201 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 77, no-payload, length 12
13:11:16.466689 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 129, length 77: compressed PPP data
13:11:16.726682 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 78, no-payload, length 12
13:11:34.149186 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 130, length 76: compressed PPP data
13:11:34.276675 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 79, no-payload, length 12
13:12:50.076693 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 80, no-payload, length 12
13:14:30.296713 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 131, length 246: compressed PPP data
13:16:34.216684 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 132, length 76: compressed PPP data
13:16:34.326675 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 81, no-payload, length 12
13:17:49.729183 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, seq 133, length 73: compressed PPP data
13:17:49.866697 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 82, no-payload, length 12
13:20:07.826683 IP 89.175.163.34 > b.b.b.b: GREv1, call 12543, ack 83, no-payload, length 12
server:~# ifconfig
br0 Link encap:Ethernet HWaddr 00:30:48:bd:43:d8
inet addr:192.168.69.1 Bcast:192.168.69.255 Mask:255.255.255.0
inet6 addr: fe80::230:48ff:febd:43d8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16514711 errors:0 dropped:0 overruns:0 frame:0
TX packets:6141861 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1058389865 (1.0 GB) TX bytes:42743605901 (42.7 GB)
eth0 Link encap:Ethernet HWaddr 00:30:48:bd:43:d8
inet6 addr: fe80::230:48ff:febd:43d8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:16140787 errors:0 dropped:0 overruns:0 frame:0
TX packets:29406798 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1102470743 (1.1 GB) TX bytes:44061884788 (44.0 GB)
Память:dc300000-dc320000
eth1 Link encap:Ethernet HWaddr 00:30:48:bd:43:d9
inet6 addr: fe80::230:48ff:febd:43d9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:147938762 errors:0 dropped:0 overruns:0 frame:0
TX packets:140445207 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:12600441207 (12.6 GB) TX bytes:182010993443 (182.0 GB)
Память:dc400000-dc420000
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:118864 errors:0 dropped:0 overruns:0 frame:0
TX packets:118864 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:194035535 (194.0 MB) TX bytes:194035535 (194.0 MB)
ppp0 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:a.a.a.a P-t-P:85.21.0.212 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
RX packets:631334 errors:0 dropped:0 overruns:0 frame:0
TX packets:1219734 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:39199270 (39.1 MB) TX bytes:1601858465 (1.6 GB)
ppp1 Link encap:Протокол PPP (Point-to-Point Protocol)
inet addr:b.b.b.b P-t-P:172.30.96.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1460 Metric:1
RX packets:3483158 errors:0 dropped:0 overruns:0 frame:0
TX packets:5474895 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:235049968 (235.0 MB) TX bytes:7313876184 (7.3 GB)
vlan2 Link encap:Ethernet HWaddr 00:30:48:bd:43:d9
inet addr:10.207.38.55 Bcast:10.207.39.255 Mask:255.255.248.0
inet6 addr: fe80::230:48ff:febd:43d9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:47878435 errors:0 dropped:0 overruns:0 frame:0
TX packets:73485713 errors:0 dropped:4 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4837514983 (4.8 GB) TX bytes:101674251367 (101.6 GB)
vlan3 Link encap:Ethernet HWaddr 00:30:48:bd:43:d9
inet addr:192.168.237.110 Bcast:192.168.237.255 Mask:255.255.255.0
inet6 addr: fe80::230:48ff:febd:43d9/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:100060327 errors:0 dropped:0 overruns:0 frame:0
TX packets:66959488 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5691783556 (5.6 GB) TX bytes:80336741608 (80.3 GB)
a.a.a.a - мой реальный ip от первого прова
d.d.d.d - мой реальный ip от второго прова
vlan2 - смотрит в первого прова
vlan3 - смотрит во второго прова
причем замечего - что если сделать подключение vpn через второго прова, потом положить первого прова и поднять - то весь GRE начитает ходить как положено через второго прова - прям мистика какая то. :(
Подскажите чего-нить - думаю что гдето косяк в настройках - но никак не могу найти где.