windows
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Stubby for Windows -------------------- We consider Windows support for Stubby to be Beta at this time. It has been tested on Windows 10 and Windows 8. There is limited support for Windows 7 (see below). User testing reports, bug reports and patches/pull requests are all welcomed via github! https://github.com/getdnsapi/stubby A development version of a Windows GUI for Stubby is also available, see https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Daemon+-+Stubby. Note that this manages Stubby running as a Windows service. To avoid conflicts with existing installs the Stubby Manager GUI will write its default configuration to C:\Program Files\Stubby\stubbyservice.yml Installation -------------------- Download and run the installer. This installs the following files in C:\Program Files\Stubby: * README.txt containing these instructions * stubby.exe binary * stubby.yml configuration file * getdns_query.exe tool for testing stubby * Powershell scripts for modifying system resolvers: * stubby_setdns_windows.ps1 * stubby_resetdns_windows.ps1 * Windows 7 versions of Powershell scripts * stubby_setdns_windows7.ps1 * stubby_resetdns_windows7.ps1 * Scripts to enable Stubby to be configured as a Scheduled Task * stubby.bat * stubby.xml NOTE: The 32bit build of Stubby is installed in C:\Program Files (x86)\Stubby on 64 bit systems so use that path below as required. Version -------- This version of the installer is version %INSTALLER_VERSION%. It is built from: getdns version: %GETDNS_VERSION% stubby version: %STUBBY_VERSION% openssl version: %OPENSSL_VERSION% Configuration -------------------- It is recommended to use the default configuration file provided which will use 'Strict' privacy mode and spread the DNS queries among several of the current DNS Privacy test servers. Note that this file contains both IPv4 and IPv6 addresses. It installed in "C:\Program Files\Stubby\stubby.yml" More information on how to customise the configuration can be found here. https://dnsprivacy.org/wiki/display/DP/Configuring+Stubby Run Stubby -------------------- Simply invoke Stubby on the command line from a command prompt window (To get a command prompt go to the Windows search box and type 'cmd' and then choose the 'Command prompt' option) > "C:\Program Files\Stubby\stubby.exe" -l The -l flag enables full logging. Alternatively a specific logging level can be controlled by using the -v flag (run '"C:\Program Files\Stubby\stubby.exe" - h' for details of available levels). A different location for the configuration file can be specified by adding: -C "<full path to stubby.yml>" See below for details of running stubby as a service on Windows 10 Test Stubby -------------------- A quick test can be done by using getdns_query (or your favourite DNS tool) on the loopback address: > "C:\Program Files\Stubby\getdns_query" -s @127.0.0.1 www.example.com You should see a status of GETDNS_RESPSTATUS_GOOD and and rcode of GETDNS_RCODE_NOERROR in the getdns_query output. You should also see a connection being made in the stubby logs. Modify your upstream resolvers (Windows 8 and 10) ---------------------------------------- *Once this change is made all your DNS queries will be re-directed to Stubby and sent over TLS!* (You may need to restart some applications to have them pick up the network settings). For Stubby to re-send outgoing DNS queries over TLS the recursive resolvers configured on your machine must be changed to send all the local queries to the loopback interface on which Stubby is listening. It might be useful to note your existing default nameservers before making this change! To change nameservers: * From Windows search box type 'cmd' and on the 'Command prompt' option that appears right click and select 'run as Administrator' * In the command prompt window that appears type >PowerShell -ExecutionPolicy bypass -file "C:\Program Files\Stubby\stubby_setdns_windows.ps1" to switch the system DNS resolvers to use Stubby. * Use the same command but with "C:\Program Files\Stubby\stubby_resetdns_windows.ps1" instead to switch back to the default DNS nameservers. You can monitor the DNS traffic using Wireshark watching on port 853. If you encounter problems reverse this change to restore your default settings (no DNS Privacy). Modify your upstream resolvers (Windows 7) ---------------------------------------- Follow the procedure above, but use the scripts: * C:\Program Files\Stubby\stubby_setdns_windows7.ps1 and * C:\Program Files\Stubby\stubby_resetdns_windows7.ps1 WARNING: These scripts can only update DNS servers on the IPv4 service. IPv6 will still use the default DNS servers, sending queries in clear text so one option is to disable IPv6. Create a Scheduled Task ---------------------- If you want Stubby to always start when you boot your system, you can create a Scheduled task for this. A template for the task is provided: to create the task just run schtasks /create /tn Stubby /XML "C:\Program Files\Stubby\stubby.xml" /RU <you_user_name> Running as a Windows service ---------------------------- Stubby can now also be installed as a windows service by using the command stubby -w install It can then be controlled via the Windows Service Manager or directly on the command line by replacing 'install' with 'start', 'stop' or 'remove' in the above command. The start command can take 2 parameters, the logging level and a custom configuration file. NOTE: To avoid conflicts with existing installs, when running as a service, stubby will read its default configuration from C:\Program Files\Stubby\stubbyservice.yml Known Issues -------------------- * We are aware of occasional issues when Windows sleeps and resumes when Stubby must be restarted to work correctly. * The help command of stubby.exe shows the wrong path for the installed configuration file. An issue has been opened for this. * The installer currently overwrites the stubby.yml file so if changes have been made a backup should be created before upgrading Building getdns and stubby for Windows -------------------------------------- Building getdns for Windows requires some dependent libraries be installed. One source for these is Microsoft's vcpkg, available from https://github.com/microsoft/vcpkg. 32bit and 64bit versions of the libraries can be installed with: C:\vcpkg>vcpkg --triplet x86-windows install libevent libyaml libidn2 libiconv libuv openssl C:\vcpkg>vcpkg --triplet x64-windows install libevent libyaml libidn2 libiconv libuv openssl CMake needs to know where these are located. One way to do this is: C:\vcpkg>set CMAKE_INCLUDE_PATH=C:\vcpkg\installed\x64-windows\include C:\vcpkg>set CMAKE_LIBRARY_PATH=C:\vcpkg\installed\x64-windows\lib You can then use CMake to generate a suitable build project. For development use, this might be a Visual Studio project. For build chains, a simpler alternative might be a Ninja build file. For example: C:\getdns>cmake -G Ninja -D CMAKE_BUILD_TYPE=Release -DBUILD_STUBBY=ON -DENABLE_SHARED=OFF . C:\getdns>ninja -v Building the Windows Installer ------------------------------ The Visual Studio solution provided in the stubby source code to build the installer requires the Wix Toolset (wixtoolset.org). This can be used as a Visual Studio plugin, or from the command line. Create a package directory Stubby, and copy the following files into the package directory from a getdns build directory containing the results of a 64bit build: * stubby\stubby.exe * getdns_query.exe * getdns_server_mon.exe From the top level getdns directory, copy: * stubby\stubby.yml.example as stubby.yml * stubby\windows\stubby_setdns_windows.ps1 * stubby\windows\stubby_resetdns_windows.ps1 * stubby/windows/stubby_setdns_windows7.ps1 * stubby/windows/stubby_resetdns_windows7.ps1 * stubby/windows/stubby.bat * stubby/windows/stubby.xml * stubby/windows/README.txt From the vcpkg installed\<triplet>\bin directory copy the required DLLs. For the build given above, these are: * yaml.dll * ssleay32.dll * libeay32.dll Finally, use the Wix tools to build the MSI using the Wix Toolset utilities: C:\Stubby>"C:\Program Files (x86)\WIX Toolset v3.11\bin\candle.exe" -arch x64 -o Stubby.wixobj Stubby64.wxs C:\Stubby>"C:\Program Files (x86)\WIX Toolset v3.11\bin\light.exe" -o Stubby.msi Stubby.wixobj When building 32bit packages, specify '-arch x86' and modify Product.wxs to use ProgramFilesFolder instead of ProgramFiles64Folder.