landrush 1.1.2 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +12 -178
- data/.travis.yml +6 -1
- data/CHANGELOG.md +18 -1
- data/CONTRIBUTING.adoc +112 -0
- data/Gemfile +6 -9
- data/Guardfile +10 -0
- data/README.adoc +100 -0
- data/Rakefile +14 -2
- data/appveyor.yml +20 -0
- data/doc/Development.adoc +112 -0
- data/doc/ProxyMobile.adoc +66 -0
- data/doc/Troubleshooting.adoc +42 -0
- data/doc/Usage.adoc +271 -0
- data/features/commands.feature +35 -0
- data/features/dns_resolution.feature +6 -5
- data/features/{landrush-ip.feature → landrush_ip.feature} +0 -0
- data/features/step_definitions/landrush_custom_steps.rb +48 -0
- data/features/support/env.rb +25 -1
- data/landrush.gemspec +3 -3
- data/lib/landrush/action/common.rb +3 -11
- data/lib/landrush/action/install_prerequisites.rb +2 -3
- data/lib/landrush/action/redirect_dns.rb +1 -1
- data/lib/landrush/action/setup.rb +25 -30
- data/lib/landrush/action/teardown.rb +8 -11
- data/lib/landrush/cap/guest/all/read_host_visible_ip_address.rb +28 -4
- data/lib/landrush/cap/guest/linux/add_iptables_rule.rb +1 -1
- data/lib/landrush/cap/guest/linux/redirect_dns.rb +2 -2
- data/lib/landrush/cap/guest/suse/add_iptables_rule.rb +20 -0
- data/lib/landrush/cap/guest/suse/install_iptables.rb +14 -0
- data/lib/landrush/cap/guest/suse/iptables_installed.rb +11 -0
- data/lib/landrush/cap/host/suse/dnsmasq_installed.rb +11 -0
- data/lib/landrush/cap/host/suse/install_dnsmasq.rb +14 -0
- data/lib/landrush/cap/host/suse/restart_dnsmasq.rb +21 -0
- data/lib/landrush/cap/host/windows/configure_visibility_on_host.rb +1 -1
- data/lib/landrush/command.rb +42 -17
- data/lib/landrush/config.rb +29 -14
- data/lib/landrush/plugin.rb +30 -0
- data/lib/landrush/server.rb +96 -138
- data/lib/landrush/start_server.rb +11 -0
- data/lib/landrush/store.rb +6 -2
- data/lib/landrush/util/path.rb +32 -0
- data/lib/landrush/util/process_helper.rb +46 -0
- data/lib/landrush/util/retry.rb +2 -2
- data/lib/landrush/version.rb +1 -1
- data/test/landrush/action/setup_test.rb +19 -25
- data/test/landrush/action/teardown_test.rb +18 -15
- data/test/landrush/cap/guest/all/read_host_visible_ip_address_test.rb +35 -1
- data/test/landrush/cap/guest/linux/configured_dns_servers_test.rb +8 -8
- data/test/landrush/cap/guest/linux/redirect_dns_test.rb +4 -4
- data/test/landrush/config_test.rb +23 -2
- data/test/landrush/dependent_vms_test.rb +5 -5
- data/test/landrush/issues/255.rb +115 -0
- data/test/landrush/server_test.rb +22 -4
- data/test/landrush/store_test.rb +28 -13
- data/test/support/test_server_daemon.rb +2 -4
- data/test/test_helper.rb +37 -14
- metadata +30 -15
- data/CONTRIBUTING.md +0 -103
- data/NOTES.md +0 -28
- data/README.md +0 -406
- data/doc/proxy-mobile/README.md +0 -50
- data/features/step_definitions/dns.rb +0 -19
- data/features/step_definitions/ip.rb +0 -13
data/Rakefile
CHANGED
@@ -5,14 +5,18 @@ require 'rake/clean'
|
|
5
5
|
require 'rubocop/rake_task'
|
6
6
|
require 'cucumber/rake/task'
|
7
7
|
require 'fileutils'
|
8
|
+
require 'asciidoctor'
|
8
9
|
|
9
10
|
CLOBBER.include('pkg')
|
10
11
|
CLEAN.include('build')
|
11
12
|
|
12
13
|
task :init do
|
14
|
+
# general build directory
|
13
15
|
FileUtils.mkdir_p 'build'
|
16
|
+
# Vagrant home directory for integration tests
|
17
|
+
FileUtils.mkdir_p 'build/vagrant.d'
|
14
18
|
end
|
15
|
-
task :
|
19
|
+
task features: :init
|
16
20
|
|
17
21
|
# Default test task
|
18
22
|
desc 'Run all unit tests'
|
@@ -23,7 +27,15 @@ end
|
|
23
27
|
|
24
28
|
# Cucumber acceptance test task
|
25
29
|
Cucumber::Rake::Task.new(:features)
|
26
|
-
task :
|
30
|
+
task features: :init
|
31
|
+
|
32
|
+
desc 'Render Asciidoc into HTML'
|
33
|
+
adoc_files = Rake::FileList['**/*.adoc']
|
34
|
+
task html: adoc_files.ext('.html')
|
35
|
+
rule '.html' => '.adoc' do |t|
|
36
|
+
FileUtils.mkdir_p 'build/html'
|
37
|
+
Asciidoctor.convert_file t.source, to_dir: 'build/html'
|
38
|
+
end
|
27
39
|
|
28
40
|
task default: [
|
29
41
|
:rubocop,
|
data/appveyor.yml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# Landrush CI configuration for AppVeyor
|
2
|
+
---
|
3
|
+
version: "{build}"
|
4
|
+
branches:
|
5
|
+
only:
|
6
|
+
- master
|
7
|
+
install:
|
8
|
+
- set PATH=C:\Ruby22\bin;%PATH%
|
9
|
+
- ruby --version
|
10
|
+
- gem --version
|
11
|
+
- gem uninstall -x bundler
|
12
|
+
- gem install bundler -v 1.12.5
|
13
|
+
- bundler --version
|
14
|
+
- bundle install
|
15
|
+
build_script:
|
16
|
+
- bundle exec rake clean install
|
17
|
+
test_script:
|
18
|
+
- bundle exec rake rubocop test TESTOPTS="-v"
|
19
|
+
artifacts:
|
20
|
+
- path: pkg\*.gem
|
@@ -0,0 +1,112 @@
|
|
1
|
+
= Development
|
2
|
+
:toc:
|
3
|
+
:toc-placement!:
|
4
|
+
|
5
|
+
The following should get you started on setting up your development environment. As a prerequisite you will need a Ruby 2.2 environment. We
|
6
|
+
recommend to use https://rvm.io/[RVM] to create an isolated development
|
7
|
+
environment. On Windows the http://rubyinstaller.org/[RubyInstaller for
|
8
|
+
Windows] is probably the easiest way to get started. In this case you
|
9
|
+
will need the http://rubyinstaller.org/add-ons/devkit/[DevKit] as well.
|
10
|
+
|
11
|
+
'''
|
12
|
+
toc::[]
|
13
|
+
'''
|
14
|
+
|
15
|
+
Once you have a working Ruby environment it is time to
|
16
|
+
https://help.github.com/articles/fork-a-repo/[fork] the repository. Refer to the link:../CONTRIBUTING.adoc[Contributing] guide for more information.
|
17
|
+
|
18
|
+
The following sections list the most important commands you will need for
|
19
|
+
development.
|
20
|
+
|
21
|
+
== Setup
|
22
|
+
|
23
|
+
* Install http://bundler.io/[Bundler]:
|
24
|
+
+
|
25
|
+
....
|
26
|
+
$ gem install bundler
|
27
|
+
....
|
28
|
+
* Install dependencies:
|
29
|
+
+
|
30
|
+
....
|
31
|
+
$ bundle install
|
32
|
+
....
|
33
|
+
* Get a list of all available build tasks:
|
34
|
+
+
|
35
|
+
....
|
36
|
+
$ bundle exec rake -T
|
37
|
+
....
|
38
|
+
|
39
|
+
* Build the Landrush gem:
|
40
|
+
+
|
41
|
+
....
|
42
|
+
$ bundle exec rake install
|
43
|
+
....
|
44
|
+
* Clean all generated files:
|
45
|
+
+
|
46
|
+
....
|
47
|
+
$ bundle exec rake clean clobber
|
48
|
+
....
|
49
|
+
|
50
|
+
== Tests
|
51
|
+
|
52
|
+
* Run the test suite:
|
53
|
+
+
|
54
|
+
....
|
55
|
+
$ bundle exec rake test
|
56
|
+
....
|
57
|
+
* Run a single test file:
|
58
|
+
+
|
59
|
+
....
|
60
|
+
$ bundle exec rake test TEST=<path to test file>
|
61
|
+
....
|
62
|
+
* Run cucumber/aruba acceptance tests:
|
63
|
+
+
|
64
|
+
....
|
65
|
+
$ bundle exec rake features
|
66
|
+
....
|
67
|
+
|
68
|
+
NOTE: The acceptance tests currently work only for OS X, out of the box.
|
69
|
+
On Linux, one has to manually configure the host visibility for the
|
70
|
+
TLD _landrush-acceptance-test_. See *Linux* in the *Visibility on the Host* section of the link:Usage.adoc[Usage guide]. On Windows,
|
71
|
+
the acceptance tests won't work due to a bug in
|
72
|
+
https://github.com/cucumber/aruba/issues/387[Aruba].
|
73
|
+
|
74
|
+
* Run a single cucumber/aruba acceptance tests:
|
75
|
+
+
|
76
|
+
....
|
77
|
+
$ bundle exec rake features FEATURE=features/<feature-filename>.feature
|
78
|
+
....
|
79
|
+
|
80
|
+
== Documentation
|
81
|
+
|
82
|
+
The documentation of this plugin is written in http://asciidoctor.org[Asciidoc]. If you need some syntax help,
|
83
|
+
refer to the http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/[AsciiDoc Syntax Quick Reference].
|
84
|
+
|
85
|
+
To build the documentation you can execute
|
86
|
+
|
87
|
+
----
|
88
|
+
$ bundle exec rake html
|
89
|
+
----
|
90
|
+
|
91
|
+
which will build the HTML documentation into the folder _build/html_.
|
92
|
+
|
93
|
+
The source code also contains a link:../Guardfile[Guardfile] for the https://github.com/guard/guard[Guard] library.
|
94
|
+
You can execute
|
95
|
+
|
96
|
+
----
|
97
|
+
$ bundle exec guard
|
98
|
+
----
|
99
|
+
|
100
|
+
and your HTML documentation will be automatically updated on each change to an Asciidoc source file.
|
101
|
+
https://github.com/guard/guard-livereload[Live reload] is also enabled, so you just need to install the right
|
102
|
+
http://livereload.com/extensions/#installing-sections[LiveReload Safari/Chrome/Firefox extension] and your
|
103
|
+
browser can refresh the page each time you save a change to your Asciidoc files.
|
104
|
+
|
105
|
+
== Misc
|
106
|
+
|
107
|
+
* Run the vagrant binary with the Landrush plugin loaded from your local
|
108
|
+
source code:
|
109
|
+
+
|
110
|
+
....
|
111
|
+
bundle exec vagrant landrush <command>
|
112
|
+
....
|
@@ -0,0 +1,66 @@
|
|
1
|
+
= Resolve Landrush entries on a mobile device
|
2
|
+
:toc:
|
3
|
+
:toc-placement!:
|
4
|
+
|
5
|
+
'''
|
6
|
+
toc::[]
|
7
|
+
'''
|
8
|
+
|
9
|
+
For your mobile phone to access VM-hosts two conditions need to be met:
|
10
|
+
|
11
|
+
* Your VM _needs to be accessible_ from the network your phone's on
|
12
|
+
(configure a http://docs.vagrantup.com/v2/networking/public_network.html[public network]).
|
13
|
+
* The phone should query Landrush to resolve DNS entries.
|
14
|
+
|
15
|
+
Most smartphones allow you to configure a custom DNS server (instructions further below),
|
16
|
+
but unfortunately some don't allow you to configure a DNS server running on port 10053.
|
17
|
+
|
18
|
+
To work around that one can proxy queries to the default port 53 with a system-wide DNS server to Landrush.
|
19
|
+
|
20
|
+
== Proxy bind to your Landrush server
|
21
|
+
|
22
|
+
The DNS-server `bind` can be installed with http://brew.sh/[homebrew] on
|
23
|
+
OS X.
|
24
|
+
|
25
|
+
In its configuration file forward all queries to your local Landrush and
|
26
|
+
disable caching:
|
27
|
+
|
28
|
+
....
|
29
|
+
options {
|
30
|
+
directory "/usr/local/var/named";
|
31
|
+
|
32
|
+
forwarders {
|
33
|
+
127.0.0.1 port 10053;
|
34
|
+
};
|
35
|
+
|
36
|
+
max-cache-ttl 0;
|
37
|
+
max-ncache-ttl 0;
|
38
|
+
};
|
39
|
+
....
|
40
|
+
|
41
|
+
After restarting bind you should be able to resolve your VM's entries on
|
42
|
+
your local default DNS server (port 53):
|
43
|
+
|
44
|
+
....
|
45
|
+
$ dig -p 53 @localhost myhost.vagrant.test
|
46
|
+
....
|
47
|
+
|
48
|
+
== Configure DNS server on your mobile phone
|
49
|
+
|
50
|
+
Set your bind server's IP address as the DNS server on your external device.
|
51
|
+
|
52
|
+
=== How to set the DNS server on iOS
|
53
|
+
|
54
|
+
. Open _Settings_ > _Wi-Fi_
|
55
|
+
. Tap the _i_-icon next to your network
|
56
|
+
. Tap the _DNS_-row and edit the value
|
57
|
+
|
58
|
+
=== How to set the DNS server on Android
|
59
|
+
|
60
|
+
. Open _Settings_ > _Wi-Fi_
|
61
|
+
. Tap and hold your network, then chose _Modify network_
|
62
|
+
. Check _Show advanced options_
|
63
|
+
. Under _IP Settings_ tap _DHCP / Static_ and change the value to _Static_
|
64
|
+
. Change the _DNS 1_ value and tap _Save_
|
65
|
+
|
66
|
+
Or use the https://play.google.com/store/apps/details?id=net.emrekoc.dnschanger[Dns Changer] application.
|
@@ -0,0 +1,42 @@
|
|
1
|
+
= Troubleshooting
|
2
|
+
:toc:
|
3
|
+
:toc-placement!:
|
4
|
+
|
5
|
+
Use this guide to resolve basic Landrush issues you run into.
|
6
|
+
|
7
|
+
'''
|
8
|
+
toc::[]
|
9
|
+
'''
|
10
|
+
|
11
|
+
== How to avoid providing sudo password on OS X
|
12
|
+
|
13
|
+
When using Landrush on OS X, Landrush will try to create a file in
|
14
|
+
`/etc/resolver` to make the guest VM visible via DNS on the host. See *OS X* in the *Visibility on the Host* section of the link:Usage.adoc[Usage guide]. To create this file, sudo permissions are needed and Landrush
|
15
|
+
will ask you for your sudo password. +
|
16
|
+
+
|
17
|
+
This can be avoided by adding the
|
18
|
+
following entries to the bottom of the sudoer configuration. Make sure
|
19
|
+
to edit your `/etc/sudoers` configuration via `sudo visudo`:
|
20
|
+
|
21
|
+
....
|
22
|
+
# Begin Landrush config
|
23
|
+
Cmnd_Alias VAGRANT_LANDRUSH_HOST_MKDIR = /bin/mkdir /etc/resolver/*
|
24
|
+
Cmnd_Alias VAGRANT_LANDRUSH_HOST_CP = /bin/cp /*/vagrant_landrush_host_config* /etc/resolver/*
|
25
|
+
Cmnd_Alias VAGRANT_LANDRUSH_HOST_CHMOD = /bin/chmod 644 /etc/resolver/*
|
26
|
+
%admin ALL=(ALL) NOPASSWD: VAGRANT_LANDRUSH_HOST_MKDIR, VAGRANT_LANDRUSH_HOST_CP, VAGRANT_LANDRUSH_HOST_CHMOD
|
27
|
+
# End Landrush config
|
28
|
+
....
|
29
|
+
|
30
|
+
== Guest is unable to access the Internet
|
31
|
+
|
32
|
+
In some network configurations the access to outside DNS servers is
|
33
|
+
restricted (firewalls, VPN, etc). Since unmatched DNS queries are per
|
34
|
+
default passed through to Google's DNS servers, this can lead to the
|
35
|
+
fact that the guest cannot access anything in the outside world. +
|
36
|
+
+
|
37
|
+
If you face problem with the guest's DNS, verify that you can access
|
38
|
+
Google's DNS server under __8.8.8.8__. If it does not work, you will
|
39
|
+
need to set a custom upstream DNS server. Check your network
|
40
|
+
configuration on the host or ask your network administrator about the
|
41
|
+
right DNS server address to use. You can set the custom DNS server via
|
42
|
+
the `config.landrush.upstream` option, see section on *Unmatched Queries* in the link:Usage.adoc[Usage guide].
|
data/doc/Usage.adoc
ADDED
@@ -0,0 +1,271 @@
|
|
1
|
+
= Usage
|
2
|
+
:toc:
|
3
|
+
:toc-placement!:
|
4
|
+
|
5
|
+
The following sections explain how you can use the Landrush DNS server and customize it as per your requirements, once you have link:README.adoc[installed] it.
|
6
|
+
|
7
|
+
'''
|
8
|
+
toc::[]
|
9
|
+
'''
|
10
|
+
|
11
|
+
== Dynamic entries
|
12
|
+
|
13
|
+
Every time a VM is started, its IP address is automatically detected and
|
14
|
+
a DNS record is created that maps the hostname to its IP. The detection
|
15
|
+
works by listing all configured interfaces of the guest using
|
16
|
+
https://rubygems.org/gems/landrush-ip/versions/0.2.5[landrush-ip],
|
17
|
+
picking the last valid IP found, while ignoring any excluded interfaces.
|
18
|
+
|
19
|
+
Excluded interfaces are an array of regular expressions; the value shown
|
20
|
+
here is the default used when no explicit value for
|
21
|
+
`config.landrush.host_interface_excludes` is specified in your
|
22
|
+
`Vagrantfile`:
|
23
|
+
|
24
|
+
....
|
25
|
+
config.landrush.host_interface_excludes = [/lo[0-9]*/, /docker[0-9]+/, /tun[0-9]+/]
|
26
|
+
....
|
27
|
+
|
28
|
+
If Landrush fails to detect the correct IP address (or none at all), you
|
29
|
+
can extend this exclusion range to exclude more interfaces.
|
30
|
+
|
31
|
+
You can also make sure to only select a specific class of IP address
|
32
|
+
(`:ipv4`, `:ipv6` or `:any`). Either way, empty values will not be
|
33
|
+
returned, but in the case of `:any` you may get the IPv6 address for an
|
34
|
+
interface that has no IPv4 address. The default is to return the first
|
35
|
+
non-empty IPv4 address:
|
36
|
+
|
37
|
+
....
|
38
|
+
config.landrush.host_interface_class = :ipv4
|
39
|
+
....
|
40
|
+
|
41
|
+
If you need or want to select an interface explicitly and you know its
|
42
|
+
name, you can also tell Landrush to grab that interface's IP address
|
43
|
+
explicitly:
|
44
|
+
|
45
|
+
....
|
46
|
+
config.landrush.host_interface = 'eth0'
|
47
|
+
....
|
48
|
+
|
49
|
+
NOTE: If you specify an interface explicitly, it will have
|
50
|
+
priority over `config.landrush.host_interface_excludes`. In other words,
|
51
|
+
if `config.landrush.host_interface_excludes` is set to `[/eth[0-9]*/]`,
|
52
|
+
but `config.landrush.host_interface` is set to `eth0` and `eth0` exists
|
53
|
+
as an interface, the IP address of `eth0` is returned. The interface
|
54
|
+
setting takes precedence over the exclude setting. If the interface does
|
55
|
+
not exist, the regular heuristics will apply and Landrush will pick the
|
56
|
+
last non-excluded IP found.
|
57
|
+
|
58
|
+
If all else fails, you can override it entirely:
|
59
|
+
|
60
|
+
....
|
61
|
+
config.landrush.host_ip_address = '1.2.3.4'
|
62
|
+
....
|
63
|
+
|
64
|
+
This setting will override both the exclude and interface settings
|
65
|
+
completely.
|
66
|
+
|
67
|
+
If you are using a multi-machine `Vagrantfile`, configure this inside
|
68
|
+
each of your `config.vm.define` sections.
|
69
|
+
|
70
|
+
== Static entries
|
71
|
+
|
72
|
+
You can add static host entries to the DNS server in your `Vagrantfile`
|
73
|
+
like so:
|
74
|
+
|
75
|
+
....
|
76
|
+
config.landrush.host 'myhost.example.com', '1.2.3.4'
|
77
|
+
....
|
78
|
+
|
79
|
+
This is great for overriding production services for nodes you might be
|
80
|
+
testing locally. For example, perhaps you might want to override the
|
81
|
+
hostname of your puppetmaster to point to a local vagrant box instead.
|
82
|
+
|
83
|
+
== Wildcard Subdomains
|
84
|
+
|
85
|
+
For your convenience, any subdomain of a DNS entry known to Landrush
|
86
|
+
will resolve to the same IP address as the entry. For example, given
|
87
|
+
`myhost.vagrant.test -> 1.2.3.4`, both `foo.myhost.vagrant.test` and
|
88
|
+
`bar.myhost.vagrant.test` will also resolve to `1.2.3.4`.
|
89
|
+
|
90
|
+
If you would like to configure your guests to be accessible from the
|
91
|
+
host as subdomains of something other than the default `vagrant.test`,
|
92
|
+
you can use the `config.landrush.tld` option in your Vagrantfile like
|
93
|
+
so:
|
94
|
+
|
95
|
+
....
|
96
|
+
config.landrush.tld = 'vm'
|
97
|
+
....
|
98
|
+
|
99
|
+
NOTE: From the **host**, you will only be able to access subdomains
|
100
|
+
of your configured TLD by default, so wildcard subdomains only apply to
|
101
|
+
that space. For the **guest**, wildcard subdomains work for anything.
|
102
|
+
|
103
|
+
== Unmatched Queries
|
104
|
+
|
105
|
+
Any DNS queries that do not match any of Landrush's configuration data,
|
106
|
+
will be passed through to an upstream DNS server. Per default Landrush
|
107
|
+
uses Google's DNS server with the IP __8.8.8.8__.
|
108
|
+
|
109
|
+
If you would like to configure your own upstream servers, add upstream
|
110
|
+
entries to your `Vagrantfile` like so:
|
111
|
+
|
112
|
+
....
|
113
|
+
config.landrush.upstream '10.1.1.10'
|
114
|
+
# Set the port to 1001
|
115
|
+
config.landrush.upstream '10.1.2.10', 1001
|
116
|
+
# If your upstream is TCP only for some strange reason
|
117
|
+
config.landrush.upstream '10.1.3.10', 1001, :tcp
|
118
|
+
....
|
119
|
+
|
120
|
+
== Visibility on the Guest
|
121
|
+
|
122
|
+
Linux guests should automatically have their DNS traffic redirected via
|
123
|
+
`iptables` rules to the Landrush DNS server. File an issue if this does
|
124
|
+
not work for you.
|
125
|
+
|
126
|
+
To disable this functionality:
|
127
|
+
|
128
|
+
....
|
129
|
+
config.landrush.guest_redirect_dns = false
|
130
|
+
....
|
131
|
+
|
132
|
+
You may want to do this if you are already proxying all your DNS
|
133
|
+
requests through your host (for example, using VirtualBox's natdnshostresolver1
|
134
|
+
option) and you have DNS servers that you can easily set as upstreams in
|
135
|
+
the daemon (for example, DNS requests that go through the host's VPN
|
136
|
+
connection).
|
137
|
+
|
138
|
+
== Visibility on the Host
|
139
|
+
|
140
|
+
Visibility on the host means that the hostname of the VMs can be
|
141
|
+
resolved on the host's DNS system. Landrush will attempt an automatic
|
142
|
+
configuration of the host, but depending on the OS, manual configuration
|
143
|
+
might be required as well.
|
144
|
+
|
145
|
+
To disable this functionality:
|
146
|
+
|
147
|
+
....
|
148
|
+
config.landrush.host_redirect_dns = false
|
149
|
+
....
|
150
|
+
|
151
|
+
* OS X
|
152
|
+
+
|
153
|
+
If you are on an OS X host, we use a nice trick to unobtrusively add a
|
154
|
+
secondary DNS server only for specific domains. During startup Landrush automatically adds
|
155
|
+
a file into `/etc/resolver` that points
|
156
|
+
lookups for hostnames ending in your `config.landrush.tld` domain to its
|
157
|
+
DNS server. (See `man 5 resolver` on your Mac OS X host for more
|
158
|
+
information on this file's syntax.)
|
159
|
+
|
160
|
+
* Linux
|
161
|
+
+
|
162
|
+
Landrush tries to achieve the same behavior on Linux hosts using
|
163
|
+
`dnsmasq`. For some Linux distributions this happens automatically (you
|
164
|
+
might have to provide your _sudo_ password). If Landrush does not know
|
165
|
+
how to install and start `dnsmasq` on your favorite Linux distribution,
|
166
|
+
you can adjust the following example from Ubuntu:
|
167
|
+
+
|
168
|
+
....
|
169
|
+
sudo apt-get install -y resolvconf dnsmasq
|
170
|
+
sudo sh -c 'echo "server=/vagrant.test/127.0.0.1#10053" > /etc/dnsmasq.d/vagrant-landrush'
|
171
|
+
sudo service dnsmasq restart
|
172
|
+
....
|
173
|
+
+
|
174
|
+
If you use a TLD other than the default `vagrant.test`, replace the TLD
|
175
|
+
in the above instructions accordingly. Please be aware that anything
|
176
|
+
ending in `.local` as TLD will not work because the `avahi` daemon
|
177
|
+
reserves this TLD for its own uses.
|
178
|
+
|
179
|
+
* Windows
|
180
|
+
+
|
181
|
+
On Windows a secondary DNS server can be configured via the properties
|
182
|
+
of the network adapter used by the VM. Landrush will attempt to
|
183
|
+
configure the adapter automatically during startup. If this fails,
|
184
|
+
please follow the manual setup instructions below.
|
185
|
+
+
|
186
|
+
It is recommended to use an elevated command prompt (command prompt with
|
187
|
+
full administrator permissions), since admin privileges are needed to
|
188
|
+
make the required changes. Landrush will try to elevate your prompt
|
189
|
+
automatically, but this requires spawning of additional processes which in
|
190
|
+
turn loose some potentially important log messages.
|
191
|
+
+
|
192
|
+
In the following section manual network configuration is described using
|
193
|
+
Windows 10 and VirtualBox.
|
194
|
+
+
|
195
|
+
When running VirtualBox on Windows in combination with Landrush the
|
196
|
+
Network Connections
|
197
|
+
(`Control Panel\Network and Internet\Network Connections`) looks
|
198
|
+
somewhat like this after a successful `vagrant up`: +
|
199
|
+
+
|
200
|
+
+
|
201
|
+
image:img/network-connections.png[Network
|
202
|
+
Connections,title="Network Connections"] +
|
203
|
+
+
|
204
|
+
There will be at least one VirtualBox network adapter. There might be
|
205
|
+
multiple depending on your configuration (number of networks configured)
|
206
|
+
and how many VMs you have running, but you just need to modify one.
|
207
|
+
+
|
208
|
+
In a first step, you need to identify the VirtualBox network adapter used
|
209
|
+
for the private network of your VM. Landrush requires a private network
|
210
|
+
adapter to work and will create one in case you are not explicitly
|
211
|
+
configuring one in your `Vagrantfile`.
|
212
|
+
+
|
213
|
+
To quickly view the settings of each network adapter you can run the
|
214
|
+
following command in a shell:
|
215
|
+
+
|
216
|
+
....
|
217
|
+
netsh interface ip show config
|
218
|
+
....
|
219
|
+
+
|
220
|
+
The output should look something like this:
|
221
|
+
+
|
222
|
+
....
|
223
|
+
Configuration for interface "Ethernet0"
|
224
|
+
DHCP enabled: Yes
|
225
|
+
IP Address: 172.16.74.143
|
226
|
+
Subnet Prefix: 172.16.74.0/24 (mask 255.255.255.0)
|
227
|
+
Default Gateway: 172.16.74.2
|
228
|
+
Gateway Metric: 0
|
229
|
+
InterfaceMetric: 10
|
230
|
+
DNS servers configured through DHCP: 172.16.74.2
|
231
|
+
Register with which suffix: Primary only
|
232
|
+
WINS servers configured through DHCP: 172.16.74.2
|
233
|
+
|
234
|
+
Configuration for interface "VirtualBox Host-Only Network"
|
235
|
+
DHCP enabled: No
|
236
|
+
IP Address: 10.1.2.1
|
237
|
+
Subnet Prefix: 10.1.2.0/24 (mask 255.255.255.0)
|
238
|
+
InterfaceMetric: 10
|
239
|
+
Statically Configured DNS Servers: None
|
240
|
+
Register with which suffix: Primary only
|
241
|
+
Statically Configured WINS Servers: None
|
242
|
+
....
|
243
|
+
+
|
244
|
+
In our case we are interested in the `VirtualBox Host-Only Network`
|
245
|
+
which has in this example the private network IP 10.1.2.1. If you do not
|
246
|
+
have a static private network IP configured and you cannot determine the
|
247
|
+
right adapter via the `netsh` output, ssh into the VM (`vagrant ssh`)
|
248
|
+
and run `ifconfig` to view the network configuration of the VM.
|
249
|
+
+
|
250
|
+
Once you identified the right network adapter run the following as
|
251
|
+
Administrator (using the network adapter name of the adapter with the
|
252
|
+
determined private network IP):
|
253
|
+
+
|
254
|
+
....
|
255
|
+
netsh interface ipv4 add dnsserver "VirtualBox Host-Only Network" address=127.0.0.1 index=1
|
256
|
+
....
|
257
|
+
+
|
258
|
+
This should be enough for Windows 10. On other Windows versions, you
|
259
|
+
might have to also add your TLD to the DNS suffix list on the DNS
|
260
|
+
Advanced TCP/IP Settings tab: +
|
261
|
+
+
|
262
|
+
image:img/advanced-tcp-properties.png[Advanced TCP/IP
|
263
|
+
Settings,title="Advanced TCP/IP Settings"] +
|
264
|
+
+
|
265
|
+
* Other Devices (phone)
|
266
|
+
+
|
267
|
+
You might want to resolve Landrush's DNS-entries on _additional_
|
268
|
+
computing devices, like a mobile phone.
|
269
|
+
Please refer to link:ProxyMobile.adoc[mobile instructions] for further details.
|
270
|
+
|
271
|
+
You can refer to the link:Troubleshooting.adoc[Troubleshooting guide] if you encounter any problems while using Landrush.
|