LINUX.ORG.RU

Сообщения nevsky

 

Fast ARPing

Существует ли какая либо утила, аля arping, но более шустрее.
Перед ней стоит такая задача:
Есть куча хостов, надо проарпингить их, но не за два дня ;), а каждый хост через 10мин., а то и менее.

Вырезка из arping.c

void catcher(void)
{
struct timeval tv;

gettimeofday(&tv, NULL);

if (start.tv_sec==0)
start = tv;

if (count-- == 0 || (timeout && MS_TDIFF(tv,start) > timeout*1000 + 500))
finish();

if (last.tv_sec==0 || MS_TDIFF(tv,last) > 500) {
send_pack(s, src, dst, &me, &he);
if (count == 0 && unsolicited)
finish();
}
alarm(1);
}

alarm(1); - выполняет ф-цию catcher(void) один раз в секунду.
alarm() принимает INT, поэтому дробное туда передать нельзя :(

Есть идеи как заставить этого зверька работать быстрее.
У меня не большой опыт программирования на С++

nevsky
()

Через sudo выполнить команду от имени другого пользователя.

Вот собственно и вопросик:
Как через sudo выполнить команду от имени другого пользователя без ввода пароля, если я не root.
Другими словами: скрипт запущенный от имени user1 должен запустить другой скрипт от имени user2.

nevsky
()

VPN и Win XP

Пытаюсь соорудить VPN соединение между Linux и Win XP. Использую pptpd. xxx.xxx.xxx.xxx - IP VPN server, к которому конекчусь от виндов, он же внешний в инет. Клиент коннектится, получает IP, Mask 255.255.255.255

Настройки: #cat /etc/pptpd.conf option /etc/ppp/options.pptpd logwtmp localip 10.10.0.10 remoteip 10.10.0.110-200

#cat /etc/ppp/options.pptpd | grep -v '#' name pptpd refuse-pap refuse-chap refuse-mschap require-mschap-v2 proxyarp lock nobsdcomp nologfd

-A POSTROUTING -s 10.10.0.0/255.255.255.0 -o ppp0 -j SNAT --to-source xxx.xxx.xxx.xxx

#ifconfig ppp0 ppp0 Link encap:Point-to-Point Protocol inet addr:10.10.0.10 P-t-P:10.10.0.110 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1400 Metric:1 RX packets:87 errors:0 dropped:0 overruns:0 frame:0 TX packets:26 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:3 RX bytes:8439 (8.2 Kb) TX bytes:1464 (1.4 Kb)

#route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.10.0.110 0.0.0.0 255.255.255.255 UH 0 0 0 ppp0 10.16.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 xxx.xxx.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 0.0.0.0 xxx.xxx.0.1 0.0.0.0 UG 0 0 0 eth0

Пингуется только xxx.xxx.xxx.xxx и сам себя (WinXP)

nevsky
()

VPN сервер для клиентов с Win XP

Появилась такая задача.
Какой VPN сервер для клиентов с Win XP посоветуете?
Что искать, куда копать?

nevsky
()

Выбор видеокарточки

Сейчас пользую NVidia 5200, хочу заменить на что-то мощнее. От этого и вопрос:
Какой видик посоветуете?
Радеоны мне что-то не особо нравятся, сам был любетелем этой линейки видиков, но после некоторых траблов и практически невозможного запуска их под Linux с полпинка (возможно, где-то и руки не с того места), но с NVidia такого не происходило.

Видик планируется около NVidia 6600 по мощности.
Если кто встречался с какими-то траблами или еще какие-то советы, буду только рад.

Информации много не бывает.

nevsky
()

kswapd 204:48.13 часа

#top
показывает, что kswapd запущен 204:48.13 часа
и еще какой-то kupdated 58:16.60 часов.
Uptime 45days.
Что это может быть? Это нормально?

# cat /proc/meminfo
MemTotal: 903940 kB
MemFree: 98628 kB
...
...
SwapTotal: 995988 kB
SwapFree: 992400 kB

об этом стоит беспокоиться и как это решать?

nevsky
()

Как узнать какие файлы держит процес?

Как узнать какие файлы держит процес?
т.е. я знаю PID, как узнать какие он занимает файлы?

nevsky
()

проверить, могу ли я отправить почту на определенный адрес.

Есть задача, проверить скриптом, проверить, могу ли я отправить почту на определенный адрес.
пример: user@some.domain.com

надо проверить существует ли такой домен, и могу ли я отправить почту на него.

через dig some.domain.com mx или dig some.domain.com a определяю существует ли такой домен (либо МХ, либо А), а теперь надо проверить, могу ли я отослать на него почту. Коннект на 25 порт к этому хосту не подойдет, потому как машина, с которой идет отправка почты находится за VPN и почту она отправляет используя транзитные смтп сервера.

Как проверить, могу ли я отправить почту на этот домен?

nevsky
()

POP3 сервер

Есть такая проблемка, десяток пользователей, размер почтового ящика для каждого пользователя - 1Гб, в основном заполнены на 50%, т.е. имеем около 500Мб у каждого пользователя или 5Гб почты на всех.
РОР3 сервер - popper
При проверке почты он копирует весь файл почты с именем user.pop и так несколько раз, конечно этот процесс занимает не мало времени, а еще если несколько юзеров одновременно будут проверять почту, то представляете что это будет? Вопрос: КАК ИЗБАВИТЬСЯ ОТ ЭТОЙ ЛАЖИ :(
Я уже утал выслушивать от этих ЮЗЕРОВ: "у меня долго проверяется почта, а ящик чистить не хочу." (черти). Да и мне необходимо держать свободного места как минимум на 3Гб больше чем отведено для всех юзеров.

nevsky
()

tar и имена файлов с пробелами.

Есть небольшой скриптик:

#!/bin/bash

DATE=`date +%Y-%m-%d\ %H:%M:%S`
FDATE=`date +%Y%m%d%H%M%S`
LOG_FILE="./backup_$FDATE.log"
echo "Backup started at: $DATE" >> $LOG_FILE
tar -czvf backup_$FDATE.tar.gz $* >> $LOG_FILE
EDATE=`date +%Y-%m-%d\ %H:%M:%S`
echo "Backup finished at: $EDATE" >> $LOG_FILE

запускаем так:
./backup.sh /home/user/some\ folder/file.txt
на это получаем такие матюки:
tar: Удаляется начальный `/' из имен объектов
tar: /home/user/some: Невозможно stat: No such file or directory
tar: folder/file.txt: Невозможно stat: No such file or directory
tar: Выход, отложенный по результатам предыдущих ошибок

чем лечить?

nevsky
()

Radeon 9200 и xorg

Кто то смог подружить этого зверька с GL.

kernel 2.6.15
ATI Drivers 8.23.7

запутил инсаллятор, все прошло ок, сделал
aticonfig --initial --input=/etc/X11/xorg.conf --resolution=1024x768
opengl-update xorg-x11

#lsmod | grep gl
fglrx 450124 0
agpgart 34448 1 fglrx

Ничего не работает.
#fglrxinfo
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Error: couldn't find RGB GLX visual!

#glxinfo
name of display: :0.0
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
Error: couldn't find RGB GLX visual

visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav
id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat
----------------------------------------------------------------------
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
0x21 24 tc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".
0x22 24 dc 1 0 0 c . . 0 0 0 0 0 0 0 0 0 0 0 0 0 None

как с ним бороть дальше не пойму?

nevsky
()

Как или чем создавать темы для KDE

Как или чем создавать темы для KDE, в смысле виды окошек, и тому подобное. В общем то, что народ чаще всего распологает в разделе скриншотов.

nevsky
()

CrossOver + Office XP

Поставил эту бяку под кросовером, все классно, но (без "но" никак нельзя)

Могу печатать на английском, а на русском нет. (буквы вообще не печатаются)
если запускаю как LANG=ru_RU ~/cxoffice/bin/winword, то в русской раскладке печатается какой-то хлам.

Я уже не говорю, о том что в некоторых всплывающихся окнах на кнопочках тот же бред, а на самом окне текст нормальный.

nevsky
()

послать ARP запрос и получить ответ.

Всем привет, есть вопрос.

пишу программу хост монитора для Linux на C++. Задача тривиальная — пинговать все хосты (1500+) и фиксировать время отклика в БД. Пинговать надо ARP запросами (ARP REQUEST).

Все бы хорошо, но не могу принять ответ на мой запрос.
Может кто подскажет, как это сотворить?


int send_packet(u_char *dev, u_char *packet, u_int packetsize)
{
struct sockaddr addr;
int sock, n;

if( (strlen(dev) == 0) ||
(packetsize == 0) )
return -1;

// Create socket descriptor
if((sock = socket(AF_INET,SOCK_TYPE,htons(ETH_P_ALL))) < 0) {
perror("socket");
exit(1);
}

// Set dev and send the packet
strncpy(addr.sa_data,dev,sizeof(addr.sa_data));
if((sendto(sock,packet,packetsize,0,&addr,sizeof(struct sockaddr))) < 0) {
perror("send");
exit(1);
}

close(sock);
return 0;
}

int send_arp(dev, sip, dip, smac, dmac) {
int uid;
unsigned int packetsize = sizeof(struct arphdr) + sizeof(struct ether_header);
unsigned char packet[packetsize];
struct ether_header *ethhdr = (struct ether_header *)packet;
struct arphdr *arp = (struct arphdr *)(packet + sizeof(struct ether_header));
u_short op;

// Are you root?
uid = getuid();
if(uid != 0)
{
printf("You must be a root. Your UID = %d.\n",uid);
exit(1);
}

memset(packet,0,packetsize);
op = ARPOP_REQUEST;

memcpy(ethhdr->ether_dhost,(u_char *)ether_aton(dmac),ETHER_ADDR_LEN);
memcpy(ethhdr->ether_shost,(u_char *)ether_aton(smac),ETHER_ADDR_LEN);
ethhdr->ether_type = htons(ETHERTYPE_ARP);

arp->hw_type = htons(ARPHDR_ETHER);
arp->proto_type = htons(ETH_P_IP);
arp->ha_len = ETH_ALEN;
arp->pa_len = IP_ALEN;
arp->opcode = htons(op);
memcpy(arp->source_add,(u_char *)ether_aton(smac),ETH_ALEN);
*(u_long *)arp->source_ip = inet_addr((char *)sip);
if(strcmp((char *)dmac,"ff:ff:ff:ff:ff:ff"))
memcpy(arp->dest_add,(u_char *)ether_aton((char *)dmac),ETH_ALEN);

*(u_long *)arp->dest_ip = inet_addr((char *)dip);

send_packet((char *)dev,packet,packetsize);
}

int main(int argc, char *argv[]){
// sip - source IP
// dip = Dest IP
// mac - source MAC
// dev - dev

send_arp(dev, sip, dip, mac, "ff:ff:ff:ff:ff:ff");
}

Тут две функции с помощью которых можно послать ARP REQUEST, а как принять ARP REPLY не заню. tcpdump показывает 2 пакета (REQUEST and REPLY) т.е. запрос правильный и пингуемый хост отвечает. Пытаюсь что-то принять, но приходит какае-то чушь. Ни разу не поймал то что нужно. (использовал recv)

Очень не хочется использовать pcap или libnet.

nevsky
()

Закачался ли файл по FTP

Всем привет, есть задачка:

Сервер 1 - Сервер 2

с Сервера 1 передаем файл по FTP на Сервер 2, на Сервере 2 по крону запускается некая утила, которая что-то делает с этим файлом.
(Файл может быть любого размера)

Вопрос:
Как на Сервере 2 понять, что файл закачан полностью, что бы не начать работать с неполным файлом.

Сейчас используется вариант с двумя файлами, закачиваются они по очереди:
1 - Основной (необходимы)
2 - Левый (используется для контроля, того что первый файл залился полностью).

Есть ли другие идеи?

nevsky
()

Большая задержка после ввода логина, перед вводом пароля

Всем привет, есть такая проблемка:
Gentoo 2005.0
пытаюсь конектиться с путьки на машину, запрашивает пароль, ввожу, потом идет большая задержка, и запрос на ввод пароля. Все бы хорошо, но это наблюдается даже при конекте на ftp, который благополучно вываливается по time out (иногда).
В логах пишет

proftpd[28646]: 192.168.0.1 (192.168.0.102[192.168.0.102]) - FTP session opened.
proftpd[28646]: 192.168.0.1 (192.168.0.102[192.168.0.102]) - mod_delay/0.4: delaying for 11274 usecs

вот эта надпись меня и настараживает: mod_delay/0.4: delaying for 11274 usecs

В чем проблема, не могу понять.
Изменить задержку перед time out не предлагать :)

nevsky
()

QoS и iptables

Всем привет, есть такая задача.
Есть сетка из n компутеров, шлюз Gentoo 2005.1 kernel 2.6.11-r3

Необходимо реализовать ограничение скорости на некоторые службы шлюза из интернет, ограничить транзитный трафик для каждого юзера (для каждого юзера может быть своя скорость), ограничить скорость на нек. службы шлюза из внутренней сети. Более того для каждого юзера хотелось бы иметь возможность изменять скорость транзитного трафа на определенные адреса.

Я подумал, что мне поможет tc
но вот в чем трабла не пойму?

eth0 - Internet
eth1 - локальная сеть

#!/bin/bash

tc="/sbin/tc"
IDEV="eth1"

iptables-restore < /var/lib/iptables/rules-save

$tc qdisc del dev $IDEV root
$tc qdisc add dev $IDEV root handle 1: htb r2q 3 debug 0

$tc class add dev $IDEV parent 1: classid 1:10 htb rate 50kbit
$tc class add dev $IDEV parent 1: classid 1:30 htb rate 30kbit

$tc filter add dev $IDEV parent 1:0 protocol ip prio 0 handle 1 fw classid 1:10
$tc filter add dev $IDEV parent 1:0 protocol ip prio 1 handle 3 fw classid 1:30


iptables -t mangle -A PREROUTING -s 192.168.0.102 -p tcp --dport 21 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -s 192.168.0.102 -p tcp --dport 21 -j RETURN
iptables -t mangle -A PREROUTING -s 192.168.0.102 -p tcp --dport 20 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -s 192.168.0.102 -p tcp --dport 20 -j RETURN

iptables -t mangle -A PREROUTING -d 192.168.0.102 -p tcp --dport 21 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -d 192.168.0.102 -p tcp --dport 21 -j RETURN
iptables -t mangle -A PREROUTING -d 192.168.0.102 -p tcp --dport 20 -j MARK --set-mark 0x1
iptables -t mangle -A PREROUTING -d 192.168.0.102 -p tcp --dport 20 -j RETURN


iptables -t mangle -A PREROUTING -j MARK --set-mark 0x3
iptables -t mangle -A PREROUTING -j RETURN

трафик по цепочкам iptables идет
iptables -t mangle -L PREROUTING -vx
счетчики постоянно увеличиваются, а в
tc -s class show dev eth1
счетчики на нуле (т.е. трафик не попадает туда)

nevsky
()

Два канала Internet в один роутер.

Всем привет,
есть два интернет соединения. и локалка

eth0 - локалка
eth1 - Inet1
eth2 - Inet2

Сейчас инет в локалке идет через eth1:
-A POSTROUTING -o eth1 -j MASQUERADE

вопросик такой, как при отключении Inet1 соорудить выход в интернет через Inet2?
есть предположение что надо создать скриптик, который заменит существующее правило - другим, где будет указано eth2.
Но тогда возникает другой вопрос:
Если работают оба канала, то через какой из них будет идти траффик от роутера и как запретить исходящий трафик с eth2 в инет, если работает eth1?
Но если с инета есть запросы на IP c eth2, то что бы нормально работало.

nevsky
()

Мультикаст маршрутизация mrouted

Всем привет.
Есть такая задача:
Надо маршрутизировать мультикаст трафик, который принимается интерфейсом xxx.xxx.xxx на 192.168.0.1. Поставил себе mrouted

/etc/mrouted.conf
tunnel 192.168.0.1 239.0.0.100

запускаю mrouted -c /etc/mrouted.conf -d

[root@nevsky /]# mrouted -c /etc/mrouted.conf -d
debug level 0x2de (pruning,routing,peers,cache,interface,membership,igmp)
21:52:34.862 mrouted version 3.9-beta3 starting
21:52:34.866 Getting vifs from kernel interfaces
21:52:34.867 installing eth0 (xxx.xxx.xxx.xxx on subnet xxx.xxx.xxx/24) as vif #0 - rate=0
21:52:34.867 installing eth1 (192.168.0.1 on subnet 192.168.0/24) as vif #1 - rate=0
21:52:34.868 Getting vifs from /etc/mrouted.conf
21:52:34.869 installing tunnel from 192.168.0.1 to 239.0.0.100 as vif #2 - rate=0
21:52:34.870 Installing vifs in mrouted...
21:52:34.870 vif #0, phyint xxx.xxx.xxx.xxx
21:52:34.872 assuming querier duties on vif 0
21:52:34.872 sending query on vif 0
21:52:34.873 SENT membership query from xxx.xxx.xxx.xxx to 224.0.0.1
21:52:34.874 SENT neighbor probe from xxx.xxx.xxx.xxx to 224.0.0.4
21:52:34.875 vif #1, phyint 192.168.0.1
21:52:34.876 assuming querier duties on vif 1
21:52:34.877 sending query on vif 1
21:52:34.878 SENT membership query from 192.168.0.1 to 224.0.0.1
21:52:34.879 SENT neighbor probe from 192.168.0.1 to 224.0.0.4
21:52:34.881 vif #2, tunnel 192.168.0.1 -> 239.0.0.100
21:52:34.881 SENT neighbor probe from 192.168.0.1 to 239.0.0.100
vifs_with_neighbors = 0

Virtual Interface Table
Vif Name Local-Address M Thr Rate Flags
0 eth0 xxx.xxx.xxx.xxx subnet: xxx.xxx.xxx/24 1 1 0 querier
IGMP querier: xxx.xxx.xxx.xxx (this system)
Nbr bitmaps: 0x0000000000000000

1 eth1 192.168.0.1 subnet: 192.168.0/24 1 1 0 querier
IGMP querier: 192.168.0.1 (this system)
Nbr bitmaps: 0x0000000000000000

2 eth1 192.168.0.1 tunnel: 239.0.0.100 1 1 0 rexmit_prunes old-tunnel
Nbr bitmaps: 0x0000000000000000


Multicast Routing Table (2 entries)
Origin-Subnet From-Gateway Metric Tmr Fl In-Vif Out-Vifs
192.168.0/24 1 0 C. 1 0*
xxx.xxx.xxx/24 1 0 C. 0 1*

вродьбы все как положено, но потом после кучи запросов от машин с сети xxx.xxx.xxx/24 происходит такое:

21:52:45.417 mrouted version 3.9-beta3
21:52:45.418 Installing vifs in kernel...
21:52:45.418 vif #0, phyint xxx.xxx.xxx.xxx
21:52:45.418 vif #1, phyint 192.168.0.1
21:52:45.418 vif #2, tunnel 192.168.0.1 -> 239.0.0.100
21:52:45.418 setsockopt MRT_ADD_VIF on vif 2: No buffer space available

В чем дело. Я уже лоб поломал.

nevsky
()

Multicast routing

Всем привет. Есть маршрутизатор FC2 ядро 2.6.5-1.358 eth0 - xxx.xxx.xxx.xxx eth1 - yyy.yyy.yyy.yyy В сети xxx.xxx.xxx.0/24 идет мультикаст трансляция по адр. 224.0.1.100:1111 надо на машине 192.168.0.101 в сети yyy.yyy.yyy.yyy принять ее. Как это соорудить? никогда мультикастом не занимался.

В ядре включена поддержка мультикаста и CONFIG_IP_PIMSM_V1=y CONFIG_IP_PIMSM_V2=y как дальше поступать?

nevsky
()

RSS подписка на новые темы