Bug 13824 - Bad error message with ${IPV4ADDRESS} use
: Bad error message with ${IPV4ADDRESS} use
Status: NEW
: Sisyphus
(All bugs in Sisyphus/etcnet)
: unstable
: all Linux
: P2 normal
Assigned To:
:
:
:
:
:
  Show dependency tree
 
Reported: 2007-12-28 22:39 by
Modified: 2014-12-23 14:51 (History)


Attachments


Note

You need to log in before you can comment on or make changes to this bug.


Description From 2007-12-28 22:39:23
При старте сети, правило 
snat ${IPV4ADDRESS}  if out-iface ${NAME}
чудесно применяется, при остановке получается ругань:

Unloading rules for the "POSTROUTING" chain in the "nat" tableiptables v1.3.7:
Bad IP address `'

Try `iptables -h' or 'iptables --help' for more information.
ERROR: /etc/net/scripts/config-fw: /sbin/iptables -t nat -D POSTROUTING -j SNAT
--to-source ${IPV4ADDRESS} -o ${NAME}

Хотя само правило удаляется...
------- Comment #1 From 2007-12-28 23:53:31 -------
Это по Андреевой части.
------- Comment #2 From 2007-12-29 00:14:55 -------
Гм. А что за тип интерфейса?
------- Comment #3 From 2007-12-29 17:34:43 -------
Как положено,
TYPE=eth
------- Comment #4 From 2007-12-29 17:39:43 -------
Очень странно, вроде все проверял. Последняя версия etcnet, надеюсь?
Посмотрю еще дома. Хотя все удаляло/добавляло. Может опять с regexp-ом для
адреса что-то не так. ip addr ls покажи, plz
------- Comment #5 From 2007-12-29 17:44:56 -------
[root@host64 ~]# ip ad ls
2: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
4: nvidia: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:e0:4d:0e:6f:b5 brd ff:ff:ff:ff:ff:ff
    inet 172.23.0.1/24 brd 172.23.0.255 scope global nvidia
6: volia: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000
    link/ether 00:e0:6f:ba:b7:c5 brd ff:ff:ff:ff:ff:ff
    inet 77.123.10.134/20 brd 77.123.15.255 scope global volia

[root@host64 ~]# rpm -q etcnet
etcnet-0.9.5-alt1
------- Comment #6 From 2007-12-29 17:53:01 -------
А hotplug случайно не используется? Похоже, что в момент остановки iptables
адреса на интерфейсе уже нет. Я предусматривал эту ситуацию, но тестировал всё
на нехотплаговском типе подключения. Может быть там и забыл что-то.
------- Comment #7 From 2007-12-29 18:02:44 -------
Интерфейс есть, я специально проверял... Интерфейс есть, а правила нет... Такое
впечатление, что удаление вызывается дважды, один раз до удаления адреса,
второй
раз уже после...

cat /etc/net/ifaces/volia/options
TYPE=eth
BOOTPROTO=dhcp
ONBOOT=yes
USE_HOTPLUG=no
MODULE=cdc_ether
DHCP_ARGS=" -R "
NEVER_RMMOD=yes
------- Comment #8 From 2007-12-30 00:09:02 -------
Нда, пока ничего не понимаю. А можешь в fw/iptables/options вставить что-то
вроде:
echo "Here"
Сколько раз выведет при остановке, столько раз и вызывает. Теоретически....Эх,
пора уже дебаг внедрять :)
------- Comment #9 From 2007-12-30 01:03:26 -------
Я поступил круче, вставил echo -e "\n `ip ad ls` \n"

К моменту вывода сообщения об ошибке адреса на интерфейсе уже нет. 
------- Comment #10 From 2007-12-30 01:07:55 -------
Чудеса....В ifdown первыми идут остановки fw и qos, потом ip rules/routes,
потом
уже идет destroy интерфейса, то есть rmmod и т.п. У тебя там не шалит никакая
из
сильно умных утилит? 
------- Comment #11 From 2007-12-30 12:22:09 -------
Какая из? Ничего специального я не настраивал! 

Судя по отладке, к моменту вызова удаления файрвола, адреса и ip routes уже
нет(что не удивительно), но ip rules еще существуют...

Кстати, только что поигрался еще и с ifup/ifdown, так вот ifdown вызывает
удаление только один и слишком поздно, так что после комплекта ifdown volia ;
ifup volia я получаю плюс одно правило... Если при выполнении этой комбинации
адрес от dhcp изменится - я получу неработоспособную систему... 
------- Comment #12 From 2007-12-30 22:20:16 -------
(In reply to comment #11)
> Какая из? Ничего специального я не настраивал! 
> 
> Судя по отладке, к моменту вызова удаления файрвола, адреса и ip routes уже
> нет(что не удивительно), но ip rules еще существуют...
Да вот это как раз и удивительно. Без dhcp адрес в этот момент существует. А вот 
функция stop_dhcp_client в functions прибивает dhcp клиент. А не может ли именно
он и удалять адрес? МОжешь проверить на статическом адреса, просто для теста?
Если адрес назначает dhcp, то он и должен его убирать? Или все-таки убирать не
он должен?

> 
> Кстати, только что поигрался еще и с ifup/ifdown, так вот ifdown вызывает
> удаление только один и слишком поздно, так что после комплекта ifdown volia ;
> ifup volia я получаю плюс одно правило... Если при выполнении этой комбинации
> адрес от dhcp изменится - я получу неработоспособную систему... 

------- Comment #13 From 2007-12-30 23:27:24 -------
Конечно должен, достаточно сказать killall dhcpcd, чтобы адреса уже не было на
интерфейсе!!!
Проверил, если сделать BOOTPROTO=static (при том, что адрес назначен через
dhcpcd), то перезапуск происходит без ругани. Я одного не понимаю - кто все
таки
удачно удаляет правило и как, dhcpcd к этому явно не причастен... Или это
конечный iptables -F уже зачищает?
------- Comment #14 From 2007-12-30 23:33:02 -------
Кстати, тогда вся процедура опускания должна обрабатывать случай, когда адреса 
на интерфейсе уже нет. Мало ли по какой причине dhcp-клиент помер :)
------- Comment #15 From 2007-12-30 23:44:03 -------
Я боюсь заикнуться, но что происходит, если вообще есть реакция, если в ходе
работы dhcpcd меняется адрес на интерфейсе... У меня бывает комп по пару
месяцев
не перегружается... Но если на старой квартире адрес у меня не менялся, то на
новом месте у меня при каждой перезагрузке он прыгает и подозреваю, что
теоретически может прыгнуть просто при очестке кэша и перезагрузке dhcpd на
стороне сервера... 
------- Comment #16 From 2007-12-31 02:36:56 -------
Нда, плохо. Слона-то я и не приметил. Опять придется под это костыль какой-то
приделывать. А недавно, вроде бы, в etcnet изобрели еще что-то, кроме static и
dhcp. Кажется, некое avahi. Там как работает добавление/удаление адресов?
Нужно,
похоже, это в виде хуков уже все реализовывать. В OS/2 это было популярно во
всяком ПО :)
Кто удаляет конечное правило - то же интересно. ifdown eth0 не должен, только
при network stop, когда удаляется всё из iptables.
------- Comment #17 From 2007-12-31 14:16:17 -------
Кстати да, с avahi я тоже собираюсь поиграться, но пока руки не дошли:) Знаю
только одно - в бубунте он(avahi) меня достал так, что я его пришиб... Хотя...
Может я просто не умею его готовить... :)
------- Comment #18 From 2008-01-01 04:02:07 -------
Надо с Денисом посовещаться. Потому как это не только firewall касается, если
использовать эту переменную. qos еще, например. Видимо, остановку fw/qos
придется вставлять еще раньше прибивания dhcp. 
------- Comment #19 From 2009-06-16 13:18:30 -------
Либо решайте, либо закрывайте.
------- Comment #20 From 2014-12-23 14:50:35 -------
у меня такая же проблема, сейчас (cert6).
При service network start переменная  ${IPV4ADDRESS} применяется..
при restart видна ругать..

[root@gate fw]# service network restart
Computing interface groups: ... 3 interfaces found
Processing /etc/net/vlantab: empty.
Stopping group 1/realphys (2 interfaces)
        Stopping lan0: 
Stopping iptables for lan0
        Unloading rules for the "PREROUTING" chain in the "nat" tableiptables:
No chain/target/match by that name.
ERROR: /etc/net/scripts/config-fw: /sbin/iptables -t nat -D PREROUTING -p tcp
--destination $IPV4ADDRESS --dport 20132 -j DNAT --to-destination
$IPV4ADDRESS:22
.
        ...OK
------- Comment #21 From 2014-12-23 14:51:53 -------
BOOTPROTO=static..