| Newsgroups |
gmane.comp.security.italian.devel |
| Message-ID |
<22758337.47501273598232277.JavaMail.defaultUser@defaultHost> |
--===============1879032728==
Content-Type: text/plain;charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Salve a tutti
Ho un problema. Ho bisogno di poter modificare la cache arp di una macchina=
=20
ubuntu
vi volevo chiedere una cosetta che mi =C3=A8 capitata che non riesco a riso=
lvere
io utilizzo le libnetlink per aggiungere una voce arp alla cache.
La voce da aggiugere =C3=A8 questa (192.168.35.12 00:12:0C:34:23:01)
L'indirizzo ip di questa macchina non esiste ma non =C3=A8 di fondamentale=
=20
importanza per il mio problema.
inserisco questa voce con il codice che ho scritto (allegato sotto) e=20
successivamente con il=20
comando ip neigh visualizzo=20
192.168.35.12 dev eth1 lladdr 00:12:0C:34:23:01 nud reachable
mentre con il comando arp -an non compare la voce e neanche in /proc/net/a=
rp
quando faccio un ping a 192.168.35.12 io mi aspetto che il kernel non facci=
a=20
la risoluzione arp poich=C3=A9 teoricamente=20
la voce =C3=A8 inserita in cache e quindi dovrebbe essere conosciuta quella=
=20
destinazione=20
invece succede che questa voce =C3=A8 come se la ignorasse. infatti parte i=
l=20
protocollo arp per cercare quella macchina
dopo il ping ottengo a 192.168.35.12 (che ricordo essere inesistente) ho:
>
>192.168.35.12 dev eth1 lladdr 00:12:0C:34:23:01 nud reachable
>192.168.35.12 dev eth1 nud failed
>
>
>con arp -an
>
>? (192.168.35.12) at <incomplete> on eth1
>
>Adesso incomplete compare perche la macchina =C3=A8 irragiungibile ma il f=
atto=20
>strano che adesso su arp -an mi compare una voce=20
e in ip neigh me ne accoda una duplicata con lo stesso indirizzo ip.
>
Quello che volevo fare io era con il mio codice inserire una voce arp e=20
quando=20
faccio il ping deve tenere subito in considerazione la voce aggiunta me
Grazie mille.
>------
>Questo =C3=A8 il codice che uso:
>
>char *iface=3D"eth1";
>=09
>=09struct rtnl_handle rth;
>=09struct {
>=09=09struct nlmsghdr =09n;
>=09=09struct ndmsg =09=09ndm;
>=09=09char =09=09=09buf[256];
>=09} req;
> =20
>=09inet_prefix dst;
>=09
>
>=09memset(&req, 0, sizeof(req));
>
>=09req.n.nlmsg_len =3D NLMSG_LENGTH(sizeof(struct ndmsg));
>=09req.n.nlmsg_flags =3D NLM_F_REQUEST | NLM_F_CREATE| NLM_F_REPLACE;
>=09req.n.nlmsg_type =3D RTM_NEWNEIGH;
>=09req.ndm.ndm_family =3D AF_INET;
>=09
>=20
> =20
> req.ndm.ndm_state =3D NUD_REACHABLE;
>
> /* add the IP */
> =20
> get_addr(&dst, "192.168.35.12", AF_INET);
>=09addattr_l(&req.n, sizeof(req), NDA_DST, &dst.data, dst.bytelen);
>
> /* add the link layer address */
> =20
>=09addattr_l(&req.n, sizeof(req), NDA_LLADDR, "00:12:0C:34:23:01",=20
LL_ADDR_LEN);
> /* find the iface index */
> //if ((req.ndm.ndm_ifindex =3D ll_name_to_index("eth1")) =3D=3D 0)=20
>=09// printf("ll_name_to_index()\n");
>
> req.ndm.ndm_ifindex =3D 2;
> /* open the netlink socket */
>
>=09if (rtnl_open(&rth, 0) < 0)
>=09 =09=09printf("Cannot open rtnl_open()");
>
>=09ll_init_map(&rth);
>
> =20
> /* send data */
> =20
>=09if (rtnl_talk(&rth, &req.n, 0, 0, NULL, NULL, NULL) < 0)
>=09 =09printf("rtnl_talk()\n");
>=20
> return 0;
--===============1879032728==
Content-Type: text/plain; charset="iso-8859-1"
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List
--===============1879032728==--