Доброго времени суток!
Уже больше года есть домашний сервер-роутер на Debian сначала 6, сейчас 7.1, эта проблема с самого начала возникла. Почем-то после перезагрузки или выключения/включения, НЕ ВСЕГДА нормально поднимаются интерфейсы, чаще всего смотрящий в инет, но очень редко смотрящий локалку. Пробовал даже менять сетевые платы местами, и на другую, правда на ту же модель - то же самое. В линуксах начал разбираться с нуля дома, уровень beginner)
Инфа по системе: мать Asrock H61Del с последним биосом 2.0 сетевые платы: 2 дешёвые TP-LINK TG-3468, проц у них Realtek RTL8168B, думаю для домашнего сервера норм вариант, в 10 раз дороже intel без особой необходимости желания покупать нет...
Настройки interfaces, iptables..
interfaces:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
#LocalNetwork
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1
#Internet
allow-hotplug eth3
iface eth3 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
# dns-nameservers 109.86.2.2 109.86.2.21
iptables (скрипт выполняется при загрузке системы, нашёл в инете, настроил под себя):
#!/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
# Объявление переменных
export IPT="iptables"
# Интерфейс который смотрит в интернет
export WAN=eth3
# Локальная сеть
export LAN=eth0
export LAN_IP_RANGE=192.168.0.0/24
# Очистка всех цепочек iptables
$IPT -F
$IPT -F -t nat
$IPT -F -t mangle
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X
# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
# разрешаем локальный траффик для loopback и внутренней сети
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A INPUT -i $LAN -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A OUTPUT -o $LAN -j ACCEPT
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении.
# Пропускать все уже инициированные соединения, а также дочерние от них
$IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
# Пропускать новые, а так же уже инициированные и их дочерние соединения
$IPT -A OUTPUT -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Разрешить форвардинг для новых, а так же уже инициированных и их дочерних соединений
$IPT -A FORWARD -p all -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
# Включаем фрагментацию пакетов. Необходимо из за разных значений MTU
$IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Отбрасывать все пакеты, которые не могут быть идентифицированы и поэтому не могут иметь определенного статуса.
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -A FORWARD -m state --state INVALID -j DROP
# Приводит к связыванию системных ресурсов, так что реальный обмен данными становится не возможным.
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP
# Разрешаем доступ из внутренней сети наружу
$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT
# Запрещаем доступ снаружи во внутреннюю сеть
$IPT -A FORWARD -i $WAN -o $LAN -j REJECT
# Маскарадинг
$IPT -t nat -A POSTROUTING -o $WAN -s $LAN_IP_RANGE -j MASQUERADE
# Далее дано как пример открытие портов извне:
# **********************************************************************
# Открываем порт для ssh
$IPT -A INPUT -i $WAN -p tcp --dport 26 -j ACCEPT
#$IPT -A INPUT -i $WAN -p udp --dport 26 -j ACCEPT
# Открытие портов для торрентов (такие же указать в torrent-клиенте)
#$IPT -A INPUT -i $WAN -p tcp -m multiport --ports 50100:51100 -j ACCEPT
# Открытие 443 порта
#$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
# Открываем 80 порт для веб сайтов
#$IPT -A INPUT -i $WAN -p all --dport 80 -j ACCEPT
# Открытие портов для игровых серверов
#$IPT -A INPUT -i $WAN -p tcp --dport 27010:27030 -j ACCEPT
#$IPT -A INPUT -i $WAN -p udp --dport 27010:27030 -j ACCEPT
# **********************************************************************
# Вывод информации о состоянии
$IPT -L
Тут вроде всё хорошо, да и с несколько другими настройками на прошлой системе то же самое было.
/etc/init.d/networking restart приводит к падению доступа в инет и ругани:
root@debsrv:~# /etc/init.d/networking restart
[warn] Running /etc/init.d/networking restart is deprecated because it may not re-enable some interfaces ... (warning).
[....] Reconfiguring network interfaces...RTNETLINK answers: File exists
Failed to bring up eth0.
done.
Когда, после ребута, один из интерфейсов не работает, при попытке поднятия его на сервере командой ifup eth0/eth3 выдаёт снова это «RTNETLINK answers: File exists».
Почему так? Что это за хрень, извините))? Ведь настроек не меняю, выкл,вкл и уже работает (или не работает)..надоело. В чём может быть дело? Что за «RTNETLINK answers: File exists»?
Как временно приемлемый вариант, я бы сделал скрипт, проверяющий состояние обоих интерфейсов, и в случае неполадок, отправляющий серв в ребут (потому что бывает не из дома подключаюсь, напр. из другого города). Только как его написать, кто бы помог))