Newsgroup: it.comp.programmare.win32
Titolo: Indirizzo IP.... ma porc....

Ciao a tutto l'NG.
Allora, premesso che non ho spedito qusto post nè a comp.lang.vb, nè 
delphi nè a nessun'altro per evitare di sentirmi dire NON E' UN PROBLEMA 
DEL LINGUAGGIO, CHIEDI SU WIN32, quindi per favore rispondetemi voi :)
Il problema è che nel mio PC c'è una skeda di rete con indirizzo 1.0.0.1
Quando da VB chiedo l'IP locale tramite il Winsock mi dice appunto che è 
1.0.0.1 e non mi dice perciò qual'è l'IP della connessione ad internet.
Quindi siccome il server lo sto facendo con Delhpi accade che cercando 
di connettermi al server (quindi a me stesso, per ora) la richiesta 
connessione viene inviata a 1.0.0.1 e quindi il mio server non la riceve.
La domanda ora è: come faccio a sapere qual'è il mio indirizzo IP di 
internet dato che purtroppo mi viene restituito 1.0.0.1? C'è un modo per 
sapere l'elenco degli indirizzi IP assegnati ai componenti del mio pc? 
Quindi magari potrei far scegliere all'utente su quale scheda lavorare 
(come si fa con i firewall e compagnia bella).

 connessione viene inviata a 1.0.0.1 e quindi il mio server non la riceve.
Hai fatto un errato binding del socket in ingresso. Fai il binding con 
l'indirizzo 0.0.0.0, così il tuo server risponderà su qualsiasi interfaccia 
di rete del tuo PC.
Ciao.
-- 
---
*************** | Have you ever retired a human by mystake?
*** Azathot *** |
*************** | To contact me, ask me gently. Thanks.

 di rete del tuo PC.
si ma e' un brutto modo di procedere quello ... ci sono alcuni server
internet che hanno 10 o piu' ip e si vorrebbe inserire un servizio solo su
un certo ip ... quindi meglio sempre bindare il servizio sull'ip giusto che
dargli un INADDR_ANY ed e' appunto il problema che ho segnalato sulla
mailing list di SDL_net e che nella prossima release verra' inserita ;-)
ciao

 un certo ip ... 
IMHO, non dovrebbe essere un problema del software server, bensì dovresti 
lanciare qualcosa prima sugli IP che non ti interessano e faccia un socket 
listening per rilevare eventuali intrusioni -- vedi utility "snort", ad 
esempio.


 un certo ip ...
E se lo deve inserire su due? Su tre? Se lo deve cambiare?
Secondo me la strada migliore (e anche nettamente piu` pulita e sicura)
e` sempre quella di bindare su tutte le interfacce, poi lavorare sulle
regole del firewall. Programmazione e amministrazione devono rimanere
due mondi distinti, e di solito l'amministratore non si fida del
programmatore (fa bene :)).
-- 
Lorenzo

 esempio.
no e' sbagliata anche questa scelta ... perche' non sono io a dovermi
difendere per una cosa che non voglio che si generi ...
magari su un ip porta 20 voglio un ftp di marca a e con certi accessi e
sulla porta 20 di un altro ip un ftp di marca b ed altri permessi ... se
volessi fare quasta conf ed avessi un server ftp che non si binda su un
certo ip ma solo su INADDR_ANY non potrei farlo e sarebbe uno spreco e
controlli in piu' da attivare da parte mia ...
ma come noti tutti i demoni server ecc ... danno la possibilita di scegliere
se bindarsi su tutti gli ip o solo su uno ... quindi e' una scelta limitante
e molto pericolosa quella di usare solo INADDR_ANY invece di dare la multi
scelta ...
ciao
ps: vedi apache,IIS,ftp ecc ... hanno tutti nelle conf il bind su un unico
ip o su un certo numero scelto da te, solo se tu scegli il listening globale
all'ora lo usano.

"Lorenzo Lutti" <lorenz...@DOHtiscalinet.it> ha scritto nel messaggio
news:ly81b.255986$Ny5.7...@twister2.libero.it...

invece e' il programmatore che non dovrebbe far generare regole in piu' di
fw per nulla ... cmq come apache ed altri demoni fanno nelle conf trovi
sempre il modo di bindarlo su tutti gli ip o solo su 1 o piu' scelti dal
sistemista che lo installa/configura.
quindi l'uso di binding in tutte le interfacce di rete dovrebbe essere
un'opzione e non lo standard, lo standard dovrebbe essere di bindarsi solo
su una certa lista di ip che siano 1 o piu' ... e sono pure stronzatine da
implementare in un programma non richiedono i salti mortali solo una
mentalita' meno da idiota per risparmiare 3 linee di codice ...
ciao
ps: anche IIS e servizi MS supportano queste configurazioni

 difendere per una cosa che non voglio che si generi ...
??????? Ma che stai a dì???
Cmq, se vuoi che il server risponda su un particolare IP, allora infili TU 
l'IP manualmente nel software (file di configurazione o sorgente poco 
importa). Se non vuoi farlo in manuale ma vuoi farlo in automatico, allora 
l'unica soluzione è bindare tutte le porte/interfaccie, lasciando al S.O. 
l'onere di impedirti di bindare ciò che è già bindato.
Anche perché mi sembra da I.A. far capire ad un programma quale sia 
l'interfaccia con routing verso il mondo esterno... ;-)
Ciao.


Ragazzi scusate stiamo degenerando un po'. Forse mi sono espresso male.
Semplicemente il mio problema č che spesso avviando i miei programmi 
client e server, essi vedono come IP della mia macchina quello della 
scheda di rete (1.0.0.1) e non quello che il mio modem ha ricevuto 
connettendosi ad internet.
Dunque la mia domanda č:
come faccio a scegliere con i tipici controlli Sock (Winsock nel caso di 
VB, TServerSocket nel caso di Delphi) quale interfaccia utilizzare? 
Perchč quando capita che venga usata l'interfaccia 1.0.0.1, il mio 
programma client lo faccio connettere a "mioindirizzo.mioserver.xxx" 
(che č il DNS dinamico che ho tramite 
dyndns.org
). Quindi il client 
risolve quel nome in IP lanciando la richiesta di connessione al mio IP 
di internet. Il programmino server purtroppo ascolta su 1.0.0.1 e non 
riceve niente di niente.
Quindi, per terminare... come faccio a dire ai componenti socket quale 
IP utilizzare?

 di rete del tuo PC.
Io so che la classe CSocket di VC++ binda automaticamente alla connessione
Internet, però Vegeta usa delphi (eh eh, che frase assurda), ma potrebbe
comunque andare a curiosare nel codice della classe CSocket.
ciao.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 configurazioni
Ah beh, allora mi rimangio tutto <eg>
-- 
Lorenzo

 l'onere di impedirti di bindare ciò che è già bindato.
se il SO ti impedisce di bindarti su qualcosa l'applicazione va
automaticamente in errore ... quello che dici tu e' lascia pure che
l'applicazioni si bindi su tutti gli ip con quella porta poi io a monte gli
sego le connessioni ... mi pare un giro astruso e spreca risorse ...
e come ti ho gia' detto non ti permette di riusare le stesse porte su altri
ip della macchina ... spreco pure di porte ...
se gia' l'applicazione puo' via configurazione bindarsi ad un solo ip non
vedo perche' non utilizzare quella potenzialita' cosi' facendo non dovrai
usare regole particolari per chiudere porte in piu' e avrai pure meno spreco
di memoria del SO che non dovra' generare i buffer/listening per ip non
usati ...
ciao

 ha scritto nel messaggio
news:46o1b.257401$Ny5.7...@twister2.libero.it...

diciamo che non puoi ... ameno che non andare a leggere le proprieta' della
connessione ad internet ... attraverso delle api o dll di so ... la via piu'
breve per fare quello che chiedi e' di creare il listening su indirizzo
0.0.0.0 (o comunemente chiamato INADDR_ANY)
ciao

 comunque andare a curiosare nel codice della classe CSocket.
non e' di VC ... ma e' delle MFC che sono librerie scritte in C++ se puo'
usarle dentro delphi all'ora puo' fare direttamente quello che dici tu, ma
si taglia le gambe in portabilita' ...
ciao

 Non saro` certo io a impedirti di fare le cose nel modo sbagliato. :)
bhe parla la persona che cammina sempre nel giusto ... prendero' i tuoi
consigli come oro colato e d'ora in poi non ragionero' e non studiero' piu'
con la mia testa !!!
ciao

 con la mia testa !!!
E` da piu` di vent'anni che si amministrano reti TCP/IP, ormai si e`
formato un certo know-how sull'argomento. Non c'e` piu` molto spazio su
cui ragionare sulle cose gia` assodate. :)
-- 
Lorenzo

Comunque sia grazie a tutti, ho risolto.
C'è la funzione API GetIpAddrTable che usata bene mi elenca tutti gli 
indirizzi IP del mio computer. Quindi ora posso chidere all'utente 
finale: quale ip vuoi usare per l'ascolto?
Quindi il problema è risolto.
Mi state scatenando un flame, e basta regà!!!
P.S.: state ragionando come se io stessi costruendo un firewall... ma io 
non lo sto facendo :) Il mio era solo un esempio per farvi capire cosa 
vi stessi chiedendo.

 cui ragionare sulle cose gia` assodate. :)
non e' vero ... e' lungi dal essere stabile questo campo di conoscenze
quindi c'e' larghissimo spazio per nuove idee e nuove implementazioni del
tutto ... quindi puoi assodare quanto vuoi ma per me se vuoi mettere su un
servizio su un server con 20 ip dove lo si vuole solo su un certo ip e tu
bellamente lo uppi in listening su tutti i 20 ip e poi gli seghi le
connessioni via fw sugli altri ip hai solo un know-how pari a 0 e non vali i
soldi spesi per un sistemista !!!
qua ci vuole gente che sappia configurare e che sia modesta e continui a
studiare ed a leggere, informarsi, partecipare alla crescita di un certo
servizio che gli serve, per ottenere il meglio, ed il meglio e' una
configurazione in cui dici al servizio bindati a questo ip ed a questa porta
e basta !!!
ora puoi dire quello che vuoi ma ho la mia testa di cazzo e le cose devono
andare come le voglio io,e non a cazzo di cane solo perche' costa fatica
leggere 20 pagine di manuale per fare una configurazione.
ti parlo cosi' perche' ho uppato server con apache e mysql configurati da me
e sono sempre andati da dio configurati con binding al solo ip utile per le
connessioni, (non ho mai preso in mano la configurazione del FW) eppure il
mysql bindato in LB non ha mai ricevuto 1 attacco DOS o di PASSWORD SPOOFING
o SSL ecc ... (ti parlo di configurazioni singolo server con 2 servizi)
cmq vedi tu se e' il caso di continuare tu per la tua strada ed io per la
mia ... non riesco a farti capire che il binding sugli ip deve essere fatto
sempre e non come feature in piu' ...
ciao