Windows 8 hostednetwork e problema de ICS, sem acesso à Internet

5

O problema

Tentando hospedar uma rede para ampliar o alcance da minha rede Wi-Fi doméstica, em vez de gastar 50 dólares em um extensor de Wi-Fi.

De qualquer forma, meu problema ocorre porque minha rede hospedada não tem acesso à Internet, não importa o que eu tentei.

O que eu fiz

Configurando

Antes de mais nada, comecei iniciando o ICS primeiro, já que preciso que o servidor DHCP atribua IP's no intervalo de 192.168.137.x no meu para ser hostednetwork.

Eu então configuro uma rede hospedada via linha de comando da seguinte forma:

netsh wlan set hostednetwork ssid="Test" key="password"
netsh wlan start hostednetwork

Funciona bem, eu pude testar essa conexão sincronizando a coleção de músicas do meu celular 'via wifi' (DoubleTwist AirSync). Declaro isso porque comecei originalmente minha hostednetwork, que inicia o ICS no modo autônomo, que atribui os IPs em 192.168.173.x, e o DoubleTwist não conseguiu encontrar meu telefone. Embora eu pudesse ter acabado de lançar e renovar o IP uma vez que comecei o modo completo do ICS.

De qualquer forma, o próximo passo que tomei. Fui para as configurações do adaptador de rede, cliquei com o botão direito no meu adaptador de Wi-Fi que está conectado à minha rede doméstica e habilitei a conexão de internet compartilhada com a recém-criada rede hospedada.

Nada, nada acontece.

Informações do sistema

IPconfig / all:

Configuraçõesdoadaptadorderede:

Fim

Eu não tenho ideia de por que isso não está funcionando, cada guia e fórum de suporte que eu pesquisei fez exatamente o que eu tenho e funcionou para eles. Eu estou supondo que é porque eu estou tentando compartilhar internet do mesmo adaptador que eu estou transmitindo de. Eu adoraria ser capaz de transmitir a partir de um dongle separado (eu tenho um sobressalente), mas o Windows não suporta isso nativamente.

    
por Eric 29.03.2014 / 17:21

4 respostas

2

Ok. Compartilhar e usar hostednetwork pode ser um estresse. É assim que eu fiz isso.
Usando linha de comando e powershell para atingir as metas necessárias.
Claro que poderia ser alcançado apenas com powershell, mas hey ... provavelmente mais tarde.

Salve o seguinte arquivo (BATCH FILE) como um * .bat. Altere de acordo onde ele lê

YOURPATH\YOURFILE.ps1

Salve o segundo arquivo (PS1 FILE) com o nome que você forneceu na etapa anterior

"YOURFILE.ps1"

Altere a primeira seção do arquivo ps1 e altere os adaptadores de acordo com o seu sistema

$wifi = "description='Broadcom 4313 802.11b/g/n'"
$ethernet = "description='Intel(R) 82577LC Gigabit Network Connection'"

Você pode obter o seu executando o seguinte comando no powershell

Get-WmiObject win32_networkadapterconfiguration | select description

É suposto ter apenas uma interface conectada, seja física (ethernet) ou sem fio.

Execute o arquivo em lotes como administrador.

Além disso, você pode iniciar o processo a partir do menu de contexto do Windows Explorer para simplificar. Para isso, use o terceiro arquivo e salve-o como reg e execute-o ou altere-o manualmente a partir da amostra. Escusado será dizer que é necessário alterar onde se lê |

YOURPATH\BATCHFILE.bat

Aprecie. Felicidades

-------------------------------------------- ARQUIVO DO LOTE

@echo off
echo Current Settings (netsh wlan show hostednetwork):
netsh wlan show hostednetwork | findstr -i status
rem echo               Current Settings
rem echo            ######################
rem echo .
echo SSID Name
netsh wlan show hostednetwork | findstr -i " ssid "
netsh wlan show hostednetwork setting=security
echo            ######################
echo            #                    #
echo            # Please select      #
echo            #                    #
echo            #   [E] Edit     #
echo            #   [S] Start    #
echo            #   [Q] Stop     #
echo            #   [V] View     #
echo            #                    #
echo            ######################
choice /C ESQV 
IF errorlevel 4 goto TetherView
IF errorlevel 3 goto TetherStop
IF errorlevel 2 goto TetherStart
IF errorlevel 1 goto TetherEdit
rem GOTO TetherEnd

:TetherEdit
echo "Please enter SSID:" 
set /p SSID=
echo "SSID Password"
set /p PassWord=
echo %SSID% %PassWord%
netsh wlan set hostednetwork mode=allow ssid=%SSID% key=%PassWord%
netsh wlan start hostednetwork
GOTO TetherEnd

:TetherStart
netsh wlan start hostednetwork
powershell -file YOURPATH\ICS-Control.ps1 enable
GOTO TetherEnd

:TetherStop
netsh wlan stop hostednetwork
powershell -file YOURPATH\ICS-Control.ps1 disable
GOTO TetherEnd

:TetherView
cls
netsh wlan show hostednetwork | findstr -i status
echo SSID Name
netsh wlan show hostednetwork | findstr -i " ssid "
netsh wlan show hostednetwork setting=security
echo Connected clients
arp -a | findstr -i 192.168.173 | findstr /V 255 | findstr /V 192.168.173.1
GOTO TetherEnd

:TetherEnd
@PAUSE

-------------------------------------------- ARQUIVO PS1

#Change accordingly
$wifi = "description='Broadcom 4313 802.11b/g/n'"
$ethernet = "description='Intel(R) 82577LC Gigabit Network Connection'"

#Doesnt change so no need to alter. Detects what interface is connected (should be only one)
$netAdapter = get-wmiobject win32_networkadapter -filter "netconnectionstatus = 2" | select netconnectionid, name, InterfaceIndex, netconnectionstatus 
if ($netAdapter.netconnectionid -cmatch "Wi-Fi"){$publicAdapter = $wifi} else {$publicAdapter = $ethernet}
$privateAdapter = "description='Microsoft Hosted Network Virtual Adapter'"

Function Var1ICSenable
{
    $virtualAdapter = Get-WMIObject win32_networkadapterconfiguration | where {$_.ServiceName -eq "vwifimp"} | % {$_.GetRelated('win32_networkadapter')} | Select -ExpandProperty Name
    $vars1 = $privateAdapter
    $Adapter0 = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter $vars1 | select description
    $mAdapter3 = $Adapter0 -replace "@{description=",""
    $mAdapter3 = $mAdapter3 -replace "}","" 
    $mAdapter4 = "description='$mAdapter3'"
    $mAdapter5 = gwmi win32_networkadapter -Filter $mAdapter4 |select netconnectionid
    $mAdapter5 = $mAdapter5 -replace "@{netconnectionid=",""
    $global:mAdapter5 = $mAdapter5 -replace "}",""
}

Function Var2ICSenable
{
    $vars2 = $publicAdapter
    $Adapter1 = Get-WmiObject Win32_NetworkAdapterConfiguration -Filter $vars2 | select description
    $mAdapter = $Adapter1 -replace "@{description=",""
    $mAdapter = $mAdapter -replace "}","" 
    $mAdapter1 = "description='$mAdapter'"
    $mAdapter2 = gwmi win32_networkadapter -Filter $mAdapter1 |select netconnectionid
    $mAdapter2 = $mAdapter2 -replace "@{netconnectionid=",""
    $global:mAdapter2 = $mAdapter2 -replace "}",""
}

function EnableDisableICS
{

    $bFound = $FALSE

    $oNetSharingManager = new-object -comobject HNetCfg.HNetShare
     if ($oNetSharingManager -eq $null)
        {
            write-host "Unable to get the HNetCfg.HnetShare object."
            Exit
        }    
    if ($oNetSharingManager.SharingInstalled -eq $null)
        {
            write-host "Sharing is not available on this platform."
            Exit
        }

    $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
    foreach ($oItem In $oConnectionCollection)
    {
        $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
        $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)
        If ($objNCProps.name -eq $sPrivateConnectionName)
        {
            $bFound = $True
            write-host "Setting ICS Private to " $bEnable " on connection: " $objNCProps.name
            If ($bEnable -eq "true")
                {
                    $EveryConnection.EnableSharing(1)
                }
            Else
                {
                    $EveryConnection.DisableSharing()
                }
        }
    }

    $oConnectionCollection = $oNetSharingManager.EnumEveryConnection
    foreach ($oItem In $oConnectionCollection)
    {
        $EveryConnection = $oNetSharingManager.INetSharingConfigurationForINetConnection($oItem)
        $objNCProps = $oNetSharingManager.NetConnectionProps($oItem)

        If ($objNCProps.name -eq $sPublicConnectionName)
        {
           $bFound = $True
           write-host "Setting ICS Public to " $bEnable " on connection: " $objNCProps.name
            If ($bEnable -eq "true")
            {
                $EveryConnection.EnableSharing(0)
            }
            Else
            {
                $EveryConnection.DisableSharing()
            }
        }
    }

    If ($bFound -eq $null)
    {
       write-host "Unable to find the connection " + $sPublicConnectionName
    }

}

Function EnableSharing
{
    #regsvr32 /s hnetcfg.dll

        # Variables to enable and disable ICS
        Var1ICSenable
        Var2ICSenable
        $global:firstICSvar = $global:mAdapter2
        $global:secondICSvar = $global:mAdapter5

    $benable = "true"
    $sPublicConnectionName = $global:firstICSvar
    $sPrivateConnectionName = $global:secondICSvar

    $mstr = $sPublicConnectionName + " " + $sPrivateConnectionName + " " + $bEnable
    EnableDisableICS $mstr
}

Function DisableSharing
{
    #regsvr32 /s hnetcfg.dll

        # Variables to enable and disable ICS
        Var1ICSenable
        Var2ICSenable
        $global:firstICSvar = $global:mAdapter2
        $global:secondICSvar = $global:mAdapter5

    $benable = "false"
    $sPublicConnectionName = $global:firstICSvar
    $sPrivateConnectionName = $global:secondICSvar

    $mstr = $sPublicConnectionName + " " + $sPrivateConnectionName + " " + $bEnable
    EnableDisableICS $mstr
    #write-host "TESTE" $mstr
}

    if ($args[0] -eq "enable"){EnableSharing}else{DisableSharing}

-------------------------------------------- REG ARQUIVO < br>

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas]
@="Tether (Hosted Network)"
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\shell\runas\command]
@="cmd.exe /c YOURPATH\BATCHFILE.bat"
    
por 12.09.2014 / 17:31
1

Porque este post é tão alto na pesquisa que vou me repetir aqui, talvez ajude.

  1. Como mencionado em várias publicações, ativei o serviço de roteamento e remoting.

mas isso foi apenas parte da solução, a internet ainda não funcionou. Portanto, ao verificar as configurações do adaptador sem fio hospedado, percebi que o endereço IP era estático, mas não havia nenhuma entrada do servidor DNS. Então aqui vem a parte 2 da solução.

  1. Editar configurações IPv4 da rede hospedada. Digite um servidor DNS válido (use qualquer servidor de DNS aberto disponível, por exemplo, o google é 8.8.8.8)

Isso funcionou para mim.

    
por 05.01.2015 / 20:41
0

Você precisa compartilhar a conexão com a Internet que está usando no seu computador. Você precisa ir para o Network Center e, em seguida, para Configurações do adaptador. Em seguida, clique com o botão direito do mouse na conexão que você deseja compartilhar, clique em propriedades e vá para a guia de compartilhamento. Lá você precisa compartilhar com sua rede hospedada.

    
por 29.03.2014 / 18:50
0

talvez um pouco atrasado para você e talvez você já tenha comprado um extensor wifi ou algo assim. No entanto estou estendendo meu sinal wifi do jeito que você estava tentando e não teve sucesso no início, mas depois eu usei a linha de comando sem as marcas "", e agora tudo está funcionando muito bem. Eu tentei mais algumas coisas que podem influenciar o processo, mas não consigo me lembrar delas.

    
por 07.05.2014 / 17:46