Страница 1 из 1
вопрос на засыпку
Добавлено: 2011-01-26 22:06:57
schizoid
Код: Выделить всё
[root@/home/eugene]# ipfw add 2 count ip from 192.168.11.08 to any
ipfw: hostname ``192.168.11.08'' unknown
[root@ /home/eugene]# ipfw add 2 count ip from 192.168.11.06 to any
00002 count ip from 192.168.11.6 to any
[root@ /home/eugene]# ipfw add 2 count ip from 192.168.11.8 to any
00002 count ip from 192.168.11.8 to any
[root@ /home/eugene]# ipfw add 2 count ip from 192.168.11.07 to any
00002 count ip from 192.168.11.7 to any
[root@ /home/eugene]# ipfw add 2 count ip from 192.168.11.09 to any
ipfw: hostname ``192.168.11.09'' unknown
в чем прикол? почему 08 и 09 не прозавывает?:)
Re: вопрос на засыпку
Добавлено: 2011-01-26 22:56:27
hizel
причем тут shell
Re: вопрос на засыпку
Добавлено: 2011-01-26 23:02:41
schizoid
ну это был скрипт запуска...типа на шелле.
Скрипт есть, только для айпи 08 и 09 он почему-то не работает
ip="01 02 03 04 05 06 07 08 09 10"
for i in $ip
do
${fwcmd} add 1$i count ip from not 192.168.11.0/24 to 192.168.11."$i" out xmit rl0
${fwcmd} add 2$i count ip from 192.168.11."$i" to not 192.168.11.0/24 in recv rl0
done
Re: вопрос на засыпку
Добавлено: 2011-01-27 15:40:12
rmn
Числа, начинающиеся с 0, считаются восьмиричными. Так как 08 и 09 в этой системе - невалидные числа, inet_aton возвращает ошибку и запрос уходит в gethostbyname, которая пытается преобразовать имя "192.168.11.08" в IP, о невозможности чего фаерволл и сообщает:
Код: Выделить всё
static int lookup_host (char *host, struct in_addr *ipaddr)
{
struct hostent *he;
if (!inet_aton(host, ipaddr)) {
if ((he = gethostbyname(host)) == NULL)
return(-1);
*ipaddr = *(struct in_addr *)he->h_addr_list[0];
}
return(0);
}
...
int inet_aton(const char *cp, struct in_addr *addr)
{
...
/*
* Collect number up to ``.''.
* Values are specified as for C:
* 0x=hex, 0=octal, isdigit=decimal.
*/
...
}
Re: вопрос на засыпку
Добавлено: 2011-01-28 1:40:30
schizoid
вельми сенкс
теперь собсна отпал и второй вопрос на счет неправильности интерпритации некоторых "ипов" с нулями.
еще раз снкс за разъяснение