Добрый день!Есть 2 сервера с CentOS 5.4, между ними настроен туннель у обоих серверов это интерфейс tun0, внутри этого туннеля трафик шифруется ipsec'ом.
ipsec настроен стандарным для centos способом в файле ifcfg-ipsec0.Проблема в том, что при загрузке системы поднимаются сначала интерфейсы eth, затем ipsec и последний tun. При таком порядке загрузки ipsec не работает, если после загрузки сделать ifup ipsec0, то все начинает работать.
Как можно сконфигурировать порядок загрузки, что бы интерфейсы tun поднимались перед тем как поднимутся интерфейсы ipsec?
В RH-дистрах нет такой возможности.сделай на интерфейсах
ONBOOT=no
и активируй их в /etc/rc.local в нужном порядке.
> В RH-дистрах нет такой возможности.
> сделай на интерфейсах
> ONBOOT=no
> и активируй их в /etc/rc.local в нужном порядке.Не говорите чушь.
Стандартными возможностями конечно нет, но кто мешает назвать файл с настройками для ipsec например так ifcgf-tun0ipsec
после чего он будет выполняться после скрипта ifcfg-tun0Ну а к топикстартеру такой вопрос, почему шифровать в туннеле а не шифровать сам туннель?
> Стандартными возможностями конечно нет, но кто мешает назвать файл с настройками для
> ipsec например так ifcgf-tun0ipsec
> после чего он будет выполняться после скрипта ifcfg-tun0Мешает то, что для каждого интерфейса свой скрипт - для tun интерфейсов ifup-tun, для ipsec - ifup-ipsec и скрипт ifup-tun не сможет поднять ipsec соединение
> Ну а к топикстартеру такой вопрос, почему шифровать в туннеле а не
> шифровать сам туннель?У провайдера запрещены протоколы AH и ESP
>> Стандартными возможностями конечно нет, но кто мешает назвать файл с настройками для
>> ipsec например так ifcgf-tun0ipsec
>> после чего он будет выполняться после скрипта ifcfg-tun0
> Мешает то, что для каждого интерфейса свой скрипт - для tun интерфейсов
> ifup-tun, для ipsec - ifup-ipsec и скрипт ifup-tun не сможет поднять
> ipsec соединениеИзвиняюсь, был немного не прав.
Сначала поднимаются все физические интерфейсы, после чего у меня поднимаются все логические типа tun. А точнее те интерфейсы у которых в конфигурации определена переменная DEVICE.
После чего поднимаются vlan bridge dsl ipsec.Что в принципе удовлетворяет Вашим требованиям.
>> Ну а к топикстартеру такой вопрос, почему шифровать в туннеле а не
>> шифровать сам туннель?
> У провайдера запрещены протоколы AH и ESP
> Сначала поднимаются все физические интерфейсы, после чего у меня поднимаются все логические
> типа tun. А точнее те интерфейсы у которых в конфигурации определена
> переменная DEVICE.
> После чего поднимаются vlan bridge dsl ipsec.Очень странно - у меня в ifcfg-ipsec0 отсутсвует переменная DEVICE, а в ifcfg-tun0 присутсвует и поднимаются - сначала ipsec затем tun
>> Сначала поднимаются все физические интерфейсы, после чего у меня поднимаются все логические
>> типа tun. А точнее те интерфейсы у которых в конфигурации определена
>> переменная DEVICE.
>> После чего поднимаются vlan bridge dsl ipsec.
> Очень странно - у меня в ifcfg-ipsec0 отсутсвует переменная DEVICE, а в
> ifcfg-tun0 присутсвует и поднимаются - сначала ipsec затем tunСейчас сам проверить не могу т.к. боевые сервера не охото ковырять, но вроде такой порядок загрузки я понял их файла /etc/init.d/network
для того что бы проверить можно поменять в нем строки action на echo и проверить.вот скрипт с основными циклами
#!/bin/bash
cd /etc/sysconfig/network-scripts
interfaces=$(ls ifcfg* | \
LANG=C sed -e "$__sed_discard_ignored_files" \
-e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \
-e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
LANG=C sort -k 1,1 -k 2n | \
LANG=C sed 's/ //')vlaninterfaces=""
vpninterfaces=""
xdslinterfaces=""
bridgeinterfaces=""for i in $interfaces; do
unset DEVICE TYPE SLAVE
eval $(LANG=C fgrep "DEVICE=" ifcfg-$i)
eval $(LANG=C fgrep "TYPE=" ifcfg-$i)
eval $(LANG=C fgrep "SLAVE=" ifcfg-$i)if [ -z "$DEVICE" ] ; then DEVICE="$i"; fi
if [ "${DEVICE##cipcb}" != "$DEVICE" ] ; then
vpninterfaces="$vpninterfaces $i"
continue
fi
if [ "$TYPE" = "xDSL" ]; then
xdslinterfaces="$xdslinterfaces $i"
continue
fiif [ "$TYPE" = "Bridge" ]; then
bridgeinterfaces="$bridgeinterfaces $i"
continue
fi
if [ "$TYPE" = "IPSEC" ]; then
vpninterfaces="$vpninterfaces $i"
continue
fiif [ "${DEVICE%%.*}" != "$DEVICE" -o "${DEVICE##vlan}" != "$DEVICE" ] ; then
vlaninterfaces="$vlaninterfaces $i"
continue
fi
if [ "$SLAVE" = "yes" ]; then
continue
fi# if LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i > /dev/null ; then
# # this loads the module, to preserve ordering
# is_available $i
# continue
# fi
# If we're in confirmation mode, get user confirmation.
if [ -f /var/run/confirm ]; then
confirm $i
test $? = 1 && continue
fi
# action $"Bringing up interface $i: " ./ifup $i boot
# rc=$((rc+$?))
echo ""Bringing up interface $i: ""
done
echo "vlan - $vlaninterfaces"
echo "bridge - $bridgeinterfaces"
echo "dsl - $xdslinterfaces"
echo "vpn - $vpninterfaces"# Bring up xDSL and VPN interfaces
for i in $vlaninterfaces $bridgeinterfaces $xdslinterfaces $vpninterfaces ; do
if ! LANG=C egrep -L "^ONBOOT=['\"]?[Nn][Oo]['\"]?" ifcfg-$i >/dev/null 2>&1 ; then
# If we're in confirmation mode, get user confirmation.
if [ -f /var/run/confirm ]; then
confirm $i
test $? = 1 && continue
fi
# action $"Bringing up interface $i: " ./ifup $i boot
# rc=$((rc+$?))
echo ""Bringing up interface $i: ""
fi
done
Действительно, есть в Вашем ответе чушь....> но кто мешает назвать файл с настройками для ipsec например так ifcgf-tun0ipsec
Мешает идеология