/etc/conf.d/net и управление отдельными интерфейсами.
Добрый день.
Волею судеб сменил провайдера и теперь ковыряю настройки сети.
Цель: получить постоянное соединение с локальной сетью и с впн провайдера (через pptp или l2tp), которое фильтруется/NATится фаерволлом и переподключается автоматически без моего участия.
Исходные данные: net-dialup/xl2tpd-1.1.12-r1, net-dialup/pptpclient-1.7.1-r1, net-dialup/ppp-2.4.4-r21 (pam). Часть конфигов брал отсюда http://homenet.corbina.net/index.php?showforum=629&prune_day=100&sort_by=Z-A&sort_key=last_post&topicfilter=all&st=30
Имею сейчас следущее:
ls -l /etc/init.d/net* lrwxrwxrwx 1 root root 18 Сен 14 2008 /etc/init.d/net.eth0 -> /etc/init.d/net.lo lrwxrwxrwx 1 root root 18 Сен 14 2008 /etc/init.d/net.eth1 -> /etc/init.d/net.lo lrwxrwxrwx 1 root root 18 Сен 17 2008 /etc/init.d/net.eth2 -> /etc/init.d/net.lo -rwxr-xr-x 1 root root 15179 Апр 25 21:35 /etc/init.d/net.lo -rwxr-xr-x 1 root root 2074 Апр 25 21:35 /etc/init.d/netmount lrwxrwxrwx 1 root root 18 Апр 24 19:21 /etc/init.d/net.ppp0 -> /etc/init.d/net.lo
# This blank configuration will automatically use DHCP for any net.*
# scripts in /etc/init.d. To create a more complete configuration,
# please review /usr/share/doc/openrc/net.example and save your configuration
# in /etc/conf.d/net (this file :]!).
config_eth1="192.168.10.1/24"
config_eth2="192.168.20.1/24"
modules="dhcp"
config_eth0="dhcp"
VPNSERV='vpn.internet.beeline.ru'
config_ppp0="ppp"
link_ppp0="pty 'pptp $VPNSERV --nolaunchpppd --nobuffer --loglevel 1'"
## name: группа цифр без @internet.beeline.ru, хотя некоторым он нужен. Это надо на месте проверять.
username_ppp0='name'
password_ppp0='pass'
pppd_ppp0="
nodefaultroute
lock
noauth
refuse-eap
refuse-chap
refuse-mschap
nobsdcomp
nodeflate
persist
debug
maxfail 0
holdoff 10
lcp-echo-interval 10
lcp-echo-failure 9
"
#preup() {
# if [ "${IFACE}" = "ppp0" ]; then
# /bin/mknod /dev/ppp c 108 0
# fi
#}
postup() {
echo postup ${IFACE}
route -n
ETH0_IP=$(ifconfig | grep 'inet addr:10.2' | sed -r 's/^.*addr:(\S+).*$/\1/')
ETH0_GW=$(route -n | grep UG | grep eth0 | grep -v '127.0.0.1' | sed -r 's/^\S+\s+(\S+).*$/\1/')
echo IP=${ETH0_IP}, GW=${ETH0_GW}
if [ "${IFACE}" = "eth0" ]; then
# указываем маршрут до ip dns-серверов
for ip in 213.234.192.8 85.21.192.3; do
route add $ip gw $ETH0_GW;
done
# Адреса VPN-серверов берутся с DNS-сервера Корбины
for vpnaddr in $(host $VPNSERV | awk '{ print $NF }'); do route add $vpnaddr gw $ETH0_GW; done;
fi
if [ "${IFACE}" = "ppp0" ]; then
# Из-за того, что адрес VPN-сервера совпадает с адресом шлюза,
# создаваемый автоматически маршрут к VPN-серверу использует интерфейс ppp0, а не eth0, исправляем
VPN=$(ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}');
echo VPN=$VPN;
route del $VPN dev ppp0;
# Удаление шлюза по умолчанию в локалку и добавление шлюза по умолчанию в инет
route del default;
route add default dev ppp0;
route add $VPN gw $ETH0_GW dev eth0;
fi
return 0
}
postdown() {
# Добавление маршрута по умолчанию в локалку
if [ "${IFACE}" = "ppp0" ]; then
killall xl2tpd pppd
route add default dev eth0
fi
return 0
}
# Перед запуском vpn должен быть поднят eth0
depend_ppp0() {
need net.eth0
}
Проблемы в данной конфигурации:
- Несмотря на участок
if [ "${IFACE}" = "ppp0" ]; then # Из-за того, что адрес VPN-сервера совпадает с адресом шлюза, # создаваемый автоматически маршрут к VPN-серверу использует интерфейс ppp0, а не eth0, исправляем VPN=$(ifconfig | grep 'P-t-P' | awk '{print $3}' | awk -F: '{print $2}'); echo VPN=$VPN; route del $VPN dev ppp0; # Удаление шлюза по умолчанию в локалку и добавление шлюза по умолчанию в инет route del default; route add default dev ppp0; route add $VPN gw $ETH0_GW dev eth0; fi, при запуске /etc/init.d/net.ppp0 start не печатается echo VPN=$VPN, не меняются маршруты
- При перезапуске /etc/init.d/net.ppp0 restart не происходит соединения вот с таким сообщением:
sent [LCP ConfReq id=0x1 <asyncmap 0x0> <magic 0x143da190> <pcomp> <accomp>] Apr 26 13:52:42 homegate pptp[7410]: anon warn[open_inetsock:pptp_callmgr.c:326]: connect: No route to host Apr 26 13:52:42 homegate pptp[7410]: anon fatal[callmgr_main:pptp_callmgr.c:124]: Could not open control connection to 85.21.0.81
Проверка показала, что через определённое время ip vpn сервера при запросе выдаётся новый. К сожалению, по вышеуказанной причине воткнуть строку определения и задания маршрута до впн сервера в ${IFACE}" = "ppp0" не удаётся.
- Для комментирования войдите или зарегистрируйтесь

Имхо, можно добавлять маршрут
Имхо, можно добавлять маршрут на всю подсеть с VPN-серверами - 85.21.0.0/24
Owl's are not what they seem...