SlServer 2005-2008 express: Connessione con ip pubblico rifiutata?

giovedì 10 dicembre 2009 - 11.15

x69asterix Profilo | Junior Member

espongo il mio problema:
ho provato sia con sqlserver 2005 che con 2008 express edition.

se mi collego in rete locale con questa stringa:

Dim server As String = TextBox3.Text
Dim porta = MaskedTextBox1.Text
Dim cn As New SqlClient.SqlConnection("Server=" + server + "," + porta + ";Network Library=DBMSSOCN;Initial Catalog=XRay;User ID=" + TextBox1.Text + ";Password=" + TextBox2.Text + ";")
cn.Open()
dove il server o lo chiamo con idirizzo di rete es: 192.18.1.2
o per nome mioserver,
la connessione avviene senza problemi.
Ma se tento di connettermi con indirizzo pubblico la connessione non avviene
premetto che ho configurato il firewall di xp ansi ad essere più preciso ho disabilitato il firewall, nel router ho impostato le porte 1433 e 1434 per lasciarle libere e le ho anche nattate.
Adesso vi chiedo cos' altro c'è da fare?
con sqlserver 2005 express ho abilitato da surface il traffico ad accettare le chiamate remote ho inserito un alias.
ma il risultato è che non riesco a connettermi con ip pubblico.

sbaglio la stringa di connessione c'è di bisogno di qualcosa che mi sfugge?

ma_di Profilo | Junior Member

Già visto qui?
http://support.microsoft.com/kb/914277/it

x69asterix Profilo | Junior Member

si....

ma_di Profilo | Junior Member

Hai provato con una autenticazione Windows?
Lasciando da parte un attimo SQL...il server lo raggiungi in ogni caso? Riesci a vedere qualche cartella? ( ovviamente parlo sempre da IP pubblico)

x69asterix Profilo | Junior Member

da ip pubblico non riesco a fare nulla!,
e questa cosa mi suona strana!,

luxsor Profilo | Guru

Ciao,
Dò per scontato che tutti i passaggi per la configurazione sono stati eseguiti correttamente.

Hai abilitato la porta tcp di sql server staticamente?
Per default la porta tcp è la 1433, ma SQL Server localmente ne assegna una dinamicamente.
Avvia SQL Server Configuration Manager / Configurazione SQL Native Cliente / Protocolli Cliente / TCP
Lascia vuoto il campo Porta Dinamica e assegna 1433 alla porta TCP
Facendo questo l'istanza sql assegnera sempre la porta tcp 1433.

NB: Posta l'eccezione che ti viene generata.

Fammi sapere




------------------------
Luxsor

x69asterix Profilo | Junior Member

ciao,
ho settato correttamente il tutto,
ho lasciato in bianco le le porte dinamiche, ho impostato la porta tcp a 1433 nelle proprietà della scheda.
questo è l'errore:

[img]http://img192.imageshack.us/img192/716/immaginesql.png[/img]

luxsor Profilo | Guru

Tipico
Allora esegui un NETSTAT -A sul computer dove risiede SQL Server.
Controlla se la porta tcp 1433 è realmente aperta, quindi stato di Listing.

In caso affermatico, devi controllare la configurazione del NAT del router, Firewall o configurazione SQL (lo sò che gli hai già controllati, ma ricontrolla)

Tu da dove effettui la connessione da remoto?

Fammi sapere




------------------------
Luxsor

x69asterix Profilo | Junior Member

la connessione la faccio dalla stessa macchina dove gira il sqlserver.
non ho più niente da controllare.....
ho perfino cambiato la porta usando quella che uso solitamente per il mulo per essere sicuro che non ci sia problema di porta ma niente.....

luxsor Profilo | Guru

>la connessione la faccio dalla stessa macchina dove gira il sqlserver.
Allora non puoi effettuare una connessione con IP WAN dall'interno.

Per provare tale connessione devi accedere all'istanza SQL Server con un altro IP WAN, quindi da un'altra connessione.

Lascia tutto configurato, porta il programma su un altro PC con una connessione differente, quindi IP WAN diverso e prova.




------------------------
Luxsor

x69asterix Profilo | Junior Member

booh.....
ma come è possibile?
non posso chiamare il mio indirizzo pubblico

luxsor Profilo | Guru

Pingarlo SI,
ma accedere ad un servizio all'interno di una rete con IP pubblico NO.
Tale ip serve solo se vuoi accedere dall'esterno della tua rete.



------------------------
Luxsor

lbenaglia Profilo | Guru

>Per default la porta tcp è la 1433, ma SQL Server localmente
>ne assegna una dinamicamente.
Non è vero
All'istanza di default viene assegnata la porta statica 1433 come impostazione predefinita.
Una Named Instance ha una porta dinamica come impostazione predefinita.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lbenaglia Profilo | Guru

>ho settato correttamente il tutto,
Dopo aver assegnato la porta statica 1433, hai riavviato il servizio relativo all'istanza?
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

lbenaglia Profilo | Guru

>Avvia SQL Server Configuration Manager / Configurazione SQL Native
>Cliente / Protocolli Cliente / TCP
>Lascia vuoto il campo Porta Dinamica e assegna 1433 alla porta
>TCP
>Facendo questo l'istanza sql assegnera sempre la porta tcp 1433.
Assolutamente no.
Quella è la porta del protocollo client NON dell'istanza!
Per modificare la porta alla quale risponde l'istanza devi selezionare SQL Server Network Configuration > Protocols for <nome istanza> > TCP/IP

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

guarda l' indirizzo è 151.56.131.81 e la tcp è 1433
se provi cosa succede?
al max errore di autenticazione giusto?

x69asterix Profilo | Junior Member

riavviato pure win

lbenaglia Profilo | Guru

>guarda l' indirizzo è 151.56.131.81 e la tcp è 1433
>se provi cosa succede?
>al max errore di autenticazione giusto?

Dall'ufficio sono proxato e non posso fare prove
Le farò più tardi...

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

ma come stringa di connessione è giusta>?

Dim server As String = TextBox3.Text
Dim porta = MaskedTextBox1.Text
Dim cn As New SqlClient.SqlConnection("Server=" + server + "," + porta + ";Network Library=DBMSSOCN;Initial Catalog=XRay;User ID=" + TextBox1.Text + ";Password=" + TextBox2.Text + ";")
cn.Open()

non ho capito bene ma dalla stessa macchina dove gira il server non posso chiamare l'ip pubblico

luxsor Profilo | Guru

>Quella è la porta del protocollo client NON dell'istanza!
>Per modificare la porta alla quale risponde l'istanza devi selezionare SQL Server Network Configuration > Protocols for <nome istanza> > TCP/IP
Assolutamente
una mia distrazione non avendo sql server management installato, sono andato a memoria.

Fatto sta la connessione dovrebbe funzionare, ma autenticazione non avviene perchè non ho le credenziali.





------------------------
Luxsor

x69asterix Profilo | Junior Member

scusa ma mi sono perso.
La stringa va bene'
in locale usa questa.
Dim server As String = TextBox3.Text
Dim porta = MaskedTextBox1.Text
Dim cn As New SqlClient.SqlConnection("Server=192.168.1.2,1433;Network Library=DBMSSOCN;Initial Catalog=XRay;User ID=" + TextBox1.Text + ";Password=" + TextBox2.Text + ";")
cn.Open()
per internet va bene uguale?
Dim cn As New SqlClient.SqlConnection("Server=ippubblico,1433;Network Library=DBMSSOCN;Initial Catalog=XRay;User ID=" + TextBox1.Text + ";Password=" + TextBox2.Text + ";")


non posso chiamare dalla stessa macchina dove gira il server l'indirizzo pubblico?

esempio in locale 192.168.1.2,1433
è la connessione avviene
per
esempio internet 151.56.131.81,1433
non và bene'

luxsor Profilo | Guru

Allora se io con SQL Server Management Studio utilizzo come Server 151.56.131.81,1433 (quello tuo) dovrebbe connettersi.
Non riesco perchè non sono autenticato con user id e password.

Quindi dovresti provare il tuo programma al difuori della tua rete.
Allega l'eseguibilie con un test di connessione al tuo PC, così posso provare.






------------------------
Luxsor

x69asterix Profilo | Junior Member

quindi cosa ti ritorna..

come ti spedisco, è un pò complicato ti dovrei allegare report + exe

luxsor Profilo | Guru

No,
crea un piccolo progettino con un form, che la classe che utilizzi per la connessione.
Deve solo effettuare la connessione con il tuo PC


------------------------
Luxsor

lbenaglia Profilo | Guru

>guarda l' indirizzo è 151.56.131.81 e la tcp è 1433
>se provi cosa succede?

OK, prova effettuata:

Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\Lorenzo>telnet 151.56.131.81 1433 Connecting To 151.56.131.81...Could not open connection to the host, on port 1433: Connect failed C:\Users\Lorenzo>

L'istanza non è correttamente esposta su internet quindi prima di affrontare il discorso autenticazione, devi rivedere passo passo la configurazione del router, firewall e protocolli di rete di SQL Server.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

io sto provando dall' ufficio è non cambia nulla anche se nutro sempre dei forti dubbi sul fatto che dalla stessa macchina non posso chiamare l'ip pubblico!!
questi sono i parametri:

Ip: 151.56.224.35
Porta: 8080

da rivedere non saprei + cosa rivedere.
Il router è settato per lasciare passare il flusso tcp sulla 8080
regola fw + nattaggio.
il firewall di winxp è off.
l' sqlserver è flaggato per le connessioni remote e locali sul protocollo sql native e protocollo sqlserver express sono attivati e settati sulla porta in questo caso "8080"
le porte dinamiche sono vuote!!
a voi

lbenaglia Profilo | Guru

>io sto provando dall' ufficio è non cambia nulla anche se nutro
>sempre dei forti dubbi sul fatto che dalla stessa macchina non
>posso chiamare l'ip pubblico!!
> questi sono i parametri:
>
> ip: 151.56.224.35
> Porta: 8080

Ma ieri non avevi detto detto di aver configurato il protocollo TCP/IP dell'istanza per rispondere staticamente sulla porta 1433?!

>da rivedere non saprei + cosa rivedere.
>Il router è settato per lasciare passare il flusso tcp sulla
>8080
>regola fw + nattaggio.
>il firewall di winxp è off.
>l' sqlserver è flaggato per le connessioni remote e locali sul
>protocollo sql native e protocollo sqlserver express sono attivati
>e settati sulla porta in questo caso "8080"
>le porte dinamiche sono vuote!!
Che significa l'ultima frase?!
"sql native e protocollo sqlserver express" non significa niente.

>a voi

Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\Lorenzo>telnet 151.56.224.35 8080 Connecting To 151.56.224.35...Could not open connection to the host, on port 8080: Connect failed C:\Users\Lorenzo>

Non va

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

151.56.187.156,8080

lbenaglia Profilo | Guru

>151.56.187.156,8080

Ohhh, qui c'è un servizio in ascolto... che sia SQL Server?
Forniscimi una login SQL Server con la relativa password che lo verifico subito.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

allora in risposta all' amico luxsor,
ti confermo che quello che mi dicevi in merito che era impossibile chiamare dalla stessa macchina l' ip pubblico era impossibile,
ti smentisco
difatti con la giusta ccortezza impostando il router è possibile!!

per lbenaglia
posso inviarti l'eseguibile se mi dici a quale indirizzo, è compilato in vb.net 2005 aspetto una conferma!.

andiamo avanti

il client risiede in ufficio e il collegamento ad internet avviene dietro proxy.
ho provato a connettermi dall' ufficio al server usando la porta 8080, credendo
che avrei risolto il problema del proxy, invece NO.
quale soluzione valida esiste per non avere problemi di connessione con il server che risiede in internet?
il server lo tengo a casa in ascolto sulla 8080

lbenaglia Profilo | Guru

>per lbenaglia
>posso inviarti l'eseguibile se mi dici a quale indirizzo, è compilato
>in vb.net 2005 aspetto una conferma!.
Non mi serve l'exe, mi basta una login con relativa password

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

dove te la mando?

lbenaglia Profilo | Guru

>dove te la mando?
Premi il link Contattami:
http://www.dotnethell.it/users/lbenaglia.aspx
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

fatto.
inviate!
aspetto notizie

lbenaglia Profilo | Guru

>fatto.
>inviate!
>aspetto notizie

Ecco:

SELECT @@VERSION; /* Output: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 <X86> (Build 2600: Service Pack 3) (1 row(s) affected) */

Applica il Service Pack 1
http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=01af61e6-2f63-4291-bcad-fd500f6027ff

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

x69asterix Profilo | Junior Member

vale a dire

per il secondo messaggio come posso ovviare per connettere da ufficio a server tramite proxy?

poi quale delle tante service pack?

lbenaglia Profilo | Guru

>vale a dire
Che mi sono connesso
La tua versione di SQL Server 2008 Express è RTM, ti suggerisco di installare l'SP1.

>per il secondo messaggio come posso ovviare per connettere da
>ufficio a server tramite proxy?
Non ne ho idea.

>poi quale delle tante service pack?
Quello più idoneo al tuo sistema.

Note: Note: SQL Server 2008 Express includes both 32-bit and 64-bit versions. SQLEXPR32_x86 is a smaller package that can be used to install SQL Server 2008 Express onto only 32-bit operating systems. SQLEXPR_x86 is the same product but supports installation onto both 32-bit and 64-bit (WoW) operating systems. SQLEXPR_x64 is a native 64-bit SQL Server 2008 Express and supports installation onto only 64-bit operating systems. There is no other difference between these packages.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

ma_di Profilo | Junior Member

Solo per ringraziarvi di questo "appassionante" thread. Meno male che sono intervenuto (molto modestamente), così non me lo sono perso.
Ho appreso più nozioni qui che in ore ed ore di studio (non che sia inutile studiare, ma ho capito dove e come focalizzare le ricerche).
Ancora grazie.
Antonio

x69asterix Profilo | Junior Member

ma secondo voi se in remoto ("dove gira il server") apro un tunnell che praticamente ascolta sulla porta 80 e me la devia sulla porta 8080
il client proxato ha modo di connettersi?
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5