Автор Тема: iptables не приема правило - bad argument  (Прочетена 2411 пъти)

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
От няколко часа мъча един FW. Ето и реда които ми връща грешка:
Код:
iptables -t nat -A POSTROUTING -o eth1 -d ! 10.0.0.0/24  -j MASQUERADE

Грешката която връща:
Bad argument '10.0.0.0/24'

Ако махна удивителният (!) знак го приема, но така не минава и не разбирам защо!
Системата е Ubuntu server 12.04.1 - ядрото е 3.2.0-29-generic-pae
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: iptables не приема правило - bad argument
« Отговор #1 -: Dec 11, 2012, 20:14 »
Първо, слагането на "!" след флага на опцията вече не е актуално, така че да не се учудваш, ако ти изкарва съобщение за това. Препоръчително е "!" да се слага преди флага на опцията. Т.е.
Цитат
iptables -A POSTROUTING -t nat -o eth0 ! -d 10.0.0.0/24 -j MASQUERADE

Второ, не знам откъде ги копираш тези редове, но имаш някакви странни интервали в тях. В реда, който си копирал тук, странният интервал е тук "24 -j". Там, където го изпълняваш, може да е точно преди "10.0.0.0/24" и затова да ти дава тази грешка. Колкото и странно да звучи, оправи си интервалите :)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

ivanatora

  • Напреднали
  • *****
  • Публикации: 658
  • Distribution: Ubuntu 10.04
  • Window Manager: Fluxbox
    • Профил
    • WWW
Re: iptables не приема правило - bad argument
« Отговор #2 -: Dec 12, 2012, 11:26 »
Позабравил съм iptables, но в POSTROUTING не беше ли безсмислено да се ползва -destination? Не беше ли PREROUTING -> -destination и POSTROUTING -> -source
Активен

dark_elf

  • Напреднали
  • *****
  • Публикации: 120
    • Профил
Re: iptables не приема правило - bad argument
« Отговор #3 -: Dec 12, 2012, 11:54 »
@neter, благодаря! Стана след като изместих (!) преди -d. Инъче няма проблем със интервалите. :)
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: iptables не приема правило - bad argument
« Отговор #4 -: Dec 12, 2012, 20:11 »
Позабравил съм iptables, но в POSTROUTING не беше ли безсмислено да се ползва -destination?
Мда, позабравил си :) Всеки пакет във всеки един момент от преминаването си през iptables си има източник (source) и насоченост (destination), така че iptables ти предоставя възможност да описваш и двете във всяка една от своите таблици (filter, nat и mangle). Можеш да видиш и, че във всички таблици има както колона source, така и колона destination. Няма логика да се показват колони, съдържащи информация, която е непроменима или неприложима, нали? ;)
В случая, dark_elf иска да маскира всички пакети, освен тези, които са насочени към 10.0.0.0/24. Така машините, в частната мрежа зад този маршрутизатор, ще имат достъп до всички, освен до споменатата мрежа. По принцип е хубаво да се описва и source-а, но ако е нужно, не е забранено да не се опише (т.е., да действа за всички източници). Не се знае и защо dark_elf пуска достъп навсякъде, освен към описаната частна мрежа, но той сигурно си има причина.

Стана след като изместих (!) преди -d. Инъче няма проблем със интервалите. :)
Да, сега пробвах на едно Ubuntu 12.04 и се оказа, че там слагането на "!" след флага не само не е препоръчително, но вече е забранено. В Debian Stable все още са валидни и двата начина, като старият само е непрепоръчителен.
Но това не пречеше вчера да се дзверя като говедо каква е разликата между твоя ред и моя ред, който изписах ръчно под него в tilda, gedit и leafpad, докато не пробвах със замяна символ по символ. За съжаление някак магически (гледам, че не си редактирал поста си) редът от твоя пост на онова място вече не съдържа странния интервал, а два обикновени интервала, но пък аз си пазя вчерашния изглед на реда за тестове. Засега виждам, че редът запазва странния си интервал, ако бъде копиран само със селектиране (вместо "Копиране" от менюто на десния бутон) и поставен със среден бутон и то не навсякъде. Ако копираният ред се постави в chrome, leafpad, tilda и gedit, странният интервал се запазва, но ако редът се постави в lxterminal, се трансформира в два обикновени интервала. Някъде има някакъв бъг, но дали е при теб или при мен, дали е в браузъра или в програмите, където ефектът се запазва, или във функцията за копиране само със селектиране в LXDE, или някъде по-дълбоко в системата... Загадка, която, както се развива, едва ли ще успея да си изясня, но не пречи да пробвам :)
« Последна редакция: Dec 12, 2012, 20:12 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

remotex

  • Напреднали
  • *****
  • Публикации: 344
    • Профил
Re: iptables не приема правило - bad argument
« Отговор #5 -: Dec 12, 2012, 20:34 »
Прав си neter
първият интервал след /24 е   т.е. код 160 (ако се не лъжа) вместо код 32 - различен м/у latin1/cp1251 напр. Обаче като гледам този документ си е правилен т.е. UTF-8 та прекодирането трябва да работи навсякъде т.е. ако lxterminal знае че му идва utf8 а трябва да го конвертира до.. каквото там е настроен да ползва (latin1/cp1251) то би трябвало да го преобразува в обикновен интервал с код 32... Докладвай за грешка на разработчиците (не знам дали има разлика като копираш нормално и/ли със среден бутон .. може пък в единия случай да няма или да си губи контекст ...па може и до ВМ да е)
Код
GeSHi (HTML):
  1. <div class="code"><pre>iptables -t nat -A POSTROUTING -o eth1 -d ! 10.0.0.0/24&nbsp; -j MASQUERADE<br></pre></div><br>

Да - Желатено е да се ползват обикновени итервали!
 Че да не се чуди после човек откъде му е дошло...
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: iptables не приема правило - bad argument
« Отговор #6 -: Dec 12, 2012, 20:47 »
Имайте предвид обаче, че проблема може да възниква още на ниво "dark_elf копира командата във форума", а не в последствие "neter и другите копират командата от форума".
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: iptables не приема правило - bad argument
« Отговор #7 -: Dec 12, 2012, 20:59 »
Да, днес е &nbsp; плюс интервал, и така няма проблем - при копирането се трансформира в два интервала и редът се поставя коректно навсякъде. Но вчера не беше така, в изходния код на страницата си се виждаше просто един интервал, но сложиш ли го в гореспоменатите програми, се оказваше различен (запазваше си различието при прехвърляне и между програмите, не само от браузъра). Вчерашният ред, когато се изпълни в tilda, iptables пищи за лош аргумент MASQUERADE, но когато се изпълни в lxterminal, странният интервал става на два интервала и се изпълнява коректно, така че проблемът не е в lxterminal, той засега ми е единственият, който преобразува странния интервал към нещо коректно. А, да, и буферът при копиране от менюто на десния бутон го преобразува коректно. Редът трябва да се копира само със селектиране и поставяне със среден бутон, за да се запази странният интервал.
Я да пробвам да сложа тук копие на вчерашния ред, пък да видим как ще изглежда

Код:
iptables -t nat -A POSTROUTING -o eth1 -d ! 10.0.0.0/24 -j MASQUERADE

Цитат
iptables -t nat -A POSTROUTING -o eth1 -d ! 10.0.0.0/24 -j MASQUERADE

Код
GeSHi (Bash):
  1. iptables -t nat -A POSTROUTING -o eth1 -d ! 10.0.0.0/24 -j MASQUERADE

П.П.: А!? Сега пък си е само &nbsp; без интервал. Може би само dark_elf може да повтори ситуацията точно така, както си беше вчера :) Само с &nbsp; без интервал (както е сега в браузъра) няма проблем при копиране в tilda, командата се изпълнява. Но вчерашното копие в tilda продължава да си е проблемно.
« Последна редакция: Dec 12, 2012, 21:03 от neter »
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Iptables
Настройка на програми
mozly 1 4106 Последна публикация Dec 10, 2002, 23:48
от Vency
Проблем с iptables: invalid argument
Настройка на програми
ivanatora 4 2363 Последна публикация May 11, 2005, 22:18
от ivanatora
Bad argument '#' в iptables
Настройка на програми
icemans 9 3240 Последна публикация Jul 08, 2011, 21:12
от ntrance
mount.nfs: Argument list too long
Настройка на програми
sash 26 5843 Последна публикация Jan 21, 2012, 21:55
от ieti
Failed to mount '/dev/sdc': Invalid argument
Настройка на хардуер
__SHADOW__ 2 1585 Последна публикация Mar 13, 2013, 07:16
от __SHADOW__