LinuxForum.Fans
Тема

Настройка "плавающей" статической маршрутизации

Автор: gleban 8 сообщений 3463 просмотров
#98832

У меня вопрос такой. Имею домашнюю сеть:
dsl-модем выходящий в интернет
ноут
комп
и еще сервер на debian 5.0.3 (является сервером баз данных через интернет)
на Дебиане имеется 2 сетевых карты.

Возникла проблема что интернет получаемый через ДСЛ-модем стал нестабилен. Поэтому параллельно подключился к другому провайдеру домашних сетей с выходом в интернет через vpn.

В домашней сети статика (далее сеть 1), в сети кабельного провайдера (далее сеть 2) - dhcp

Вот настройки сетевых карт на Дебиане
[console]
debian:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:04:61:4b:5e:b4
inet addr:10.4.164.251 Bcast:10.4.164.255 Mask:255.255.255.128
inet6 addr: fe80::204:61ff:fe4b:5eb4/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:349 errors:0 dropped:0 overruns:0 frame:0
TX packets:626 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:154995 (151.3 KiB) TX bytes:59018 (57.6 KiB)
Interrupt:22 Base address:0xa000

eth1 Link encap:Ethernet HWaddr 00:04:61:4b:5e:83
inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::204:61ff:fe4b:5e83/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5129 errors:0 dropped:0 overruns:0 frame:0
TX packets:5555 errors:0 dropped:0 overruns:1 carrier:0
collisions:0 txqueuelen:1000
RX bytes:628799 (614.0 KiB) TX bytes:865041 (844.7 KiB)
Interrupt:19 Base address:0x9000

lo Link encap:Local 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:2438 errors:0 dropped:0 overruns:0 frame:0
TX packets:2438 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:343128 (335.0 KiB) TX bytes:343128 (335.0 KiB)
[/console]

если выполнить route показывает
[console]
debian:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.0.10.10 10.4.164.254 255.255.255.255 UGH 0 0 0 eth0
10.4.164.128 * 255.255.255.128 U 0 0 0 eth0
localnet * 255.255.255.0 U 0 0 0 eth1
10.0.12.0 10.4.164.254 255.255.255.0 UG 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth1
[/console]

сеть 1 подключена к eth1, сеть 2 к eth0

в сети 2 есть внутренние ресурсы 10.0.12.2 которые с дебиана видятся прекрасно.
Вопрос: что мне надо сделать чтобы я из сети 1 видел например тот же самый 10.0.12.2?

Для того чтобы проходила внутренняя маршрутизация я сделал команду
[console]
debian:~# echo 1 > /proc/sys/net/ipv4/ip_forward
[/console]
и перегрузил сервер и при команде
[console]
debian:~# cat /proc/sys/net/ipv4/ip_forward
1
[/console]
показывает "1". я так понимаю что внутренняя маршрутизация включена, однако из сети 1 я не могу пропинговать ни 10.0.12.2 ни даже адрес дебиана в сети 2 - 10.4.164.251

Что еще и куда надо прописать чтобы все заработало?


И вопрос 2.

В связи с тем что как я уже писал есть необходимость во второй линии интернета, как сделать так чтобы соединение с интернетом было через сеть 2 резервным? Т.е. чтобы весь трафик с сервера шел через дсл-модем, а в случае когда он не работает через vpn-шлюз сети2.

#98855

nano /home/nat #вписываем туда

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

#Маскардинг в локалку
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Сохраняем!
Назначаем права
chmod +x /home/nat

Если всё норм в пишем в автозагрузки nano /etc/rc.local перед exit 0
/home/nat

#98856

На счёт 2 вопроса пока сам бьюсь.

#98867

нашол можно по извращаться над скриптом)

сохранить скрипт и засунуть в cron

#!/bin/bash
if ping -q -c 2 google.com; then
echo "ping OK"
else
echo "ping BAD"
fi

например переделать так

#!/bin/bash
if ping -q -c 2 google.com; then
echo "ping OK"
poff inet
else
echo "ping BAD"
pon inet
fi

Ну можно доработать. smile всё зависит от задачи.
ток например до google жестоко маршрут прописать через adsl

#98877

со скриптом я уже возился, только он проверяет доступность сервака из сети пингованием самого себя и если этого не происходит - перегружает дсл-модем

text

#!/bin/sh

PATH="/sbin:/bin:/usr/sbin:/usr/bin" LOGFILE="/srv/ftp/log/csserver.log"

case "$1" in *)

dt=`date` routes=`route -n|grep ^0\.0\.0\.0|awk '{print $2}' | grep -ic "."`;

if [ "$routes" = "2" ]; then echo "$dt : delete transtelecom default route" >>"$LOGFILE" route del default dev eth0 fi ipaddr=`ping -c 1 -q mydomain.dyndns.tv | sed '3,6d' | sed -e 's/).*//' | sed -e 's/.*(//'`; decade=`echo "$ipaddr" | sed -e 's/\..*//'`;

if [ "$decade" = "192" -o "$decade" = "172" -o "$decade" = "10" -o "$decade" = "" ]; then echo "$dt : restart DSL (ip address not delegated - $ipaddr)" >>"$LOGFILE" wget -v -F -S --http-user=login --http-password=pass --ignore-length --referer="http://login:pass@192.168.1.1/maintenance/tools_system.htm" "http://login:pass@192.168.1.1/Forms/tools_system_1" -O "/srv/ftp/log/rbtdsl.info" fi

;; esac

exit 0

закинул его вызов в крон раз в 5 минут, но это не совсем тот путь который нужен, потому как если дсл-интернет умрет и через 5 минут (в самом худшем случае) только поднимется второй интернет через vpn это не есть хорошо

#99127

Попробовал сделать так как писали:


#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
modprobe iptable_nat
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
#Маскардинг в локалку
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

скрипт выполнился, но при попытке пинговать из сети 1 сеть 2 ничего не происходит (Превышен интервал ожидания для запроса). Это же пишет даже при попытке пинговать второй айпишник дебиана 10.4.164.251 из сети 192.168.1.0/24 а конкретнее с ноутбука с адресом 192.168.1.4

В чем может быть засада?

Войдите или зарегистрируйтесь, чтобы ответить.