web-dev-qa-db-ja.com

Windows 8hostednetworkおよびICS問題、インターネットアクセスなし

問題

外出してWi-Fiエクステンダーに50ドルを費やす代わりに、ネットワークをホストして自宅のWi-Fiネットワークの範囲を拡張しようとしています。

とにかく私の問題は、私が何を試しても、ホストされているネットワークがインターネットにアクセスできないという点で発生します。


私がしたこと

セットアップ

まず最初に、ホストされるネットワーク上で192.168.137.xの範囲のIPを割り当てるDHCPサーバーが必要なため、最初にICS)を起動することから始めました。

次に、次のようにコマンドラインからホストネットワークを設定します。

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

正常に動作します。携帯電話の音楽コレクションを「wifi経由」(DoubleTwistAirSync)で同期することで、この接続をテストできました。私が最初にホストネットワークを開始したので、これを述べます。これは、スタンドアロンモードでICSを開始し、代わりに192.168.173.xでIPを割り当て、DoubleTwistが私の電話を見つけることができませんでした。 ICSフルモードを開始したら、IPをリリースして更新できたはずです。

とにかく次のステップを踏みました。ネットワークアダプターの設定に移動し、ホームネットワークに接続されているwifiアダプターを右クリックして、新しく作成されたホストネットワークとの共有インターネット接続を有効にしました。

灘、何も起こらない。


システムインフォメーション

IPconfig/all:

IPconfig /all

ネットワークアダプタの設定:

Network Adapter Settings


終わり

なぜこれが機能しないのかわかりません。グーグルで検索したすべてのガイドとサポートフォーラムは、私が持っていることを正確に実行しており、彼らのために機能しています。放送しているのと同じアダプターからインターネットを共有しようとしているからだと思います。別のドングル(スペアがあります)からブロードキャストできるようにしたいと思いますが、Windowsはそれをネイティブにサポートしていません。

5
Eric

OK。 hostednetworkの共有と使用は、ストレスになる可能性があります。これが私がやった方法です。
コマンドラインとPowerShellを使用して必要な目標を達成します。
確かにPowerShellでのみ達成できますが、ちょっと...おそらく後で。

次の(バッチファイル)ファイルを* .batとして保存します。それに応じてそれが読む場所を変更します

YOURPATH\YOURFILE.ps1

前の手順で指定した名前で2番目のファイル(PS1 FILE)を保存します

「YOURFILE.ps1」

Ps1ファイルの最初のセクションを変更し、システムに応じてアダプターを変更します

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

PowerShellで次のコマンドを実行することができます

Get-WmiObject win32_networkadapterconfiguration |説明を選択

物理(イーサネット)またはワイヤレスのいずれかで接続されたインターフェイスが1つだけであると想定されています。

管理者としてバッチファイルを実行します。

さらに、簡単にするために、Windowsエクスプローラーのコンテキストメニューからプロセスを開始できます。
そのためには、3番目のファイルを使用し、それをregとして保存して実行するか、サンプルから手動で変更します
言うまでもなく、読む場所を変更する必要があります

YOURPATH\BATCHFILE.bat

楽しい。乾杯

- - - - - - - - - - - - - - - - - - - - - - バッチファイル

@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

-------------------------------------------- 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}

--------------------------------------------登録ファイル

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"
2
Marco Vaz

この投稿は検索で非常に高いので、ここで繰り返しますが、おそらく役立つでしょう。

  1. いくつかの投稿で述べたように、私はルーティングとリモート処理サービスを有効にしました。

しかし、それは解決策の一部にすぎず、インターネットはまだ機能しませんでした。そのため、ホストされているワイヤレスアダプタの設定を確認すると、IPアドレスが静的であることに気付きましたが、DNSサーバーのエントリはありませんでした。そこで、ソリューションのパート2を紹介します。

  1. ホストされているネットワークのIPv4設定を編集します。有効なDNSサーバーを入力します(利用可能なオープンDNSサーバーを使用します。たとえば、Googleは8.8.8.8です)

それは私のために働いた。

1
Gowler

多分あなたのために少し遅れて、多分あなたはすでにwifiエクステンダーか何かを買っています。ただし、wifi信号をあなたが試したとおりに拡張していて、最初は成功しませんでしたが、「」マークのないコマンドラインを使用したところ、すべてが正常に機能しています。プロセスに影響を与える可能性のあるいくつかのことを試しましたが、正確に思い出せません。

0
Bart

コンピューターで使用しているインターネット接続を共有する必要があります。ネットワークセンターに移動してから、アダプタ設定に移動する必要があります。次に、共有する接続を右クリックし、[プロパティ]をクリックして、[共有]タブに移動します。そこで、hostednetworkと共有する必要があります。

0
Auke1001