ADSL-роутер и разрыв соединения

Jul 25, 2007 19:35

Уже полгода меня доставала проблема, что во время разрыва соединения ADSL-модем сбрасывал таблицу трансляции адресов. Это выражалось хорошим таким, минут на пять, лагом открытых на клиенте соединений. Например, та же аська jabber держит постоянное соединение.
Когда провайдер рвет связь раз в сутки - оно строить и жить не мешает, но в сибирь пришел сезон дождей и колодцы с телекомуникациями (лапшой до АТС) залило - разрывы участились раз в пять.

Решение проблемы относительно простое. В модеме (Acorp W400G) внутри linux, соединение поднимается стандартным pppd и можно написать свой скрипт ip-up, закинув его в модем.
NAT в модеме сделан через MASQUERADE, которое при переподключении сбросит таблицу NAT, поэтому в скрипте ip-up правило с MASQUERADE удаляем и заменяем его на SNAT, благо, у webstream внешний IP за последний год у меня не менялся ни разу.
Ну а в случае, если внешний IP сменится, получим лаг минут на 20, но вероятность этого ничтожна.

# cat /var/tmp/mycfg/pppup.sh
#!/bin/sh

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/var/tmp/mycfg
export PATH

# $1 $2 $3 $4 $5 $6
# interface-name tty-device speed local-IP-address remote-IP-address ipparam

action="-A"
if [ ! -z "$CONNECT_TIME" ]; then
action="-D"
fi

# this rules is placed before the script is called
$ipt -t nat -D POSTROUTING --out-interface "$1" -j MASQUERADE

$ipt -t nat $action POSTROUTING --out-interface "$1" -j SNAT --to-source "$4"
#

linux, acorp w400g, howto, iptables, webstream

Previous post Next post
Up