FAQ.md
... ...
@@ -23,7 +23,7 @@ Many users do use a virtual private server (VPS) for connecting to DN42. A VPS i
23 23
The DN42 registry used to be maintained in monotone, but was moved to git following resource and performance
24 24
issues. There may still be references back to monotone in some of the documentation, but the registry location is now:
25 25
26
-https://git.dn42.dev/dn42/registry (https://git.dn42/dn42/registry)
26
+[https://git.dn42.dev/dn42/registry](https://git.dn42/dn42/registry)
27 27
28 28
### Can I use Windows to clone and update the registry ?
29 29
_Sidebar.md
... ...
@@ -4,7 +4,7 @@
4 4
* [Getting Started](/howto/Getting-Started)
5 5
* [Registry Authentication](/howto/Registry-Authentication)
6 6
* [Address Space](/howto/Address-Space)
7
- * [FAQ](//FAQ)
7
+ * [FAQ](/FAQ)
8 8
9 9
* How-To
10 10
* [Wireguard](/howto/wireguard)
howto/Getting-Started.md
... ...
@@ -169,6 +169,7 @@ To register an IPv6 prefix, you create an `inet6num` object. dn42 uses the fd00:
169 169
dn42 is interconnected with other networks, like icvpn, which also use the same ULA range so a registration in the dn42 registry can't prevent IPv6 conflicts. A fully random prefix (see [RFC4193](https://tools.ietf.org/html/rfc4193)) is recommended; finding a conflict and needing to renumber your network is no fun.
170 170
171 171
A few websites can generate random ULA prefixes for you:
172
+
172 173
* [dn42regsrv](https://explorer.burble.com/free#/6)
173 174
* [SimpleDNS](https://simpledns.com/private-ipv6)
174 175
* [Ultratools](https://www.ultratools.com/tools/rangeGenerator)
... ...
@@ -317,18 +318,18 @@ You can find [configuration examples for Bird here](bird).
317 318
* [Important Network configuration](networksettings)
318 319
319 320
* VPN/Tunnel:
320
- * [Wireguard](/howto/wireguard)
321
- * [Openvpn](/howto/openvpn)
322
- * [Tinc](/howto/tinc)
323
- * [IPsec with public key authentication](/howto/IPsec-with-PublicKeys)
321
+ * [Wireguard](/howto/wireguard)
322
+ * [Openvpn](/howto/openvpn)
323
+ * [Tinc](/howto/tinc)
324
+ * [IPsec with public key authentication](/howto/IPsec-with-PublicKeys)
324 325
* BGP:
325
- * [Bird](/howto/Bird)
326
- * [Quagga](/howto/Quagga)
326
+ * [Bird](/howto/Bird)
327
+ * [Quagga](/howto/Quagga)
327 328
* Router specific:
328
- * [dn42 on OpenWRT](OpenWRT)
329
- * [EdgeOS Configuration](EdgeOS-Config-Example)
330
- * [EdgeOS GRE/IPsec Example](EdgeOS-GRE-IPsec-Example)
331
- * [BGP on Extreme Networks Summit 1i](BGP-on-Extreme-Summit1i)
329
+ * [dn42 on OpenWRT](OpenWRT)
330
+ * [EdgeOS Configuration](EdgeOS-Config-Example)
331
+ * [EdgeOS GRE/IPsec Example](EdgeOS-GRE-IPsec-Example)
332
+ * [BGP on Extreme Networks Summit 1i](BGP-on-Extreme-Summit1i)
332 333
333 334
# Configure DNS
334 335
howto/Getting-started.md
... ...
@@ -1,329 +0,0 @@
1
-You want to join dn42, but you don't know where to start. This guide gives general guidelines about dn42 and routing in general, but it assumes that you are knowledgeable with routing.
2
-
3
-# Requirements
4
-
5
-- you have at least one router running 24/7. Any Linux or BSD box can be turned into a router. If your home router runs OpenWRT, you might consider using it for dn42.
6
-- your router is able to establish network tunnels over the Internet (Wireguard, GRE, OpenVPN, IPSec, Tinc...). Beware, your network operator might filter this kind of traffic, e.g. in schools or universities.
7
-- you are generally knowledgeable with networking and routing (i.e. you've heard about BGP, IGP, forwarding, and you're willing to configure a BGP router such as Quagga or Bird)
8
-
9
-# Formalities
10
-
11
-Don't worry, it's not as tedious as registering with a RIR ;)
12
-
13
-## Subscribe to the mailing list
14
-
15
-This is important, as it allows to stay up-to-date on best practices, new services, security issues...
16
-
17
-See [Contact](/contact#contact_mailing-list) to subscribe.
18
-
19
-## Fill in the registry
20
-
21
-You must create several objects in the DN42 registry: <https://git.dn42.dev/dn42/registry>
22
-
23
-The registry is a git repository, so objects are created by forking the main repository, making your changes and then submitting a pull request for review. See the [git documentation](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes) and guides on [github](https://help.github.com/en/github/using-git) for how to use git to work with remote repositories.
24
-
25
-When submitting your pull request, please squash your commits. It makes the request easier to read and simplifies the change history. See this [StackOverflow question](https://stackoverflow.com/questions/5189560/squash-my-last-x-commits-together-using-git) for a simple guide on how to do this.
26
-
27
-Remember to add authentication to your `mntner` object, and [sign your commit](/howto/Registry-Authentication)
28
-
29
-The registry includes a number of scripts to help check your request:
30
-
31
- - `fmt-my-stuff <FOO>-MNT`: automatically fixes minor formatting errors
32
- - `check-my-stuff <FOO>-MNT`: validates your objects against the registry schema
33
- - `check-pol origin/master <FOO>-MNT`: checks for policy violations
34
-
35
-The registry maintainers run all three scripts against each request, so please run these yourself first to check for simple errors.
36
-
37
-Do browse through the registry and look at the [pull request queue](https://git.dn42.dev/dn42/registry/pulls) to see examples, understand how the process works and see the types of questions asked by the registry maintainers.
38
-
39
-*Whilst it is possible to use the web interface to edit files, you are encouraged to clone your repo locally and use the command line git tools. It's easy to do and learning how to use git is a skill worth knowing. Using the web interface creates a large number of commits and prevents you from checking your changes with the registry scripts*
40
-
41
----
42
-
43
-This example assumes that your name is `<FOO>`, part of an organisation called `<FOO-ORG>` (for instance, your hackerspace). *Organisation objects are not required if your are registering as an individual*. Obviously, these should be replaced by the appropriate values in all examples below.
44
-
45
-We will create several types of objects:
46
- - **maintainer** objects, which are authenticated so that only you can edit your own objects
47
- - **person** objects, which describe people or organisations and provide contact information
48
- - and **resource** objects (AS number, IP subnet, DNS zone, etc).
49
-
50
-All objects are simple text files in the specific subfolders, but the files do have a particular format. The files should use spaces and not tabs, and the attribute values must start on the 20th column.
51
-
52
-### Create a maintainer object
53
-
54
-Create a `mntner` object in `data/mntner/` named `<FOO>-MNT`. It will be used to edit all the objects that are under your responsibility.
55
-
56
-- use `<FOO>-MNT` as `mnt-by`, otherwise, you won't be able to edit your maintainer object.
57
-- Add an 'auth' attribute so that changes to your objects can be verified.
58
-
59
-The `auth` attribute is used to verify changes to your object. There is a separate page on [registry authentication](/howto/Registry-Authentication) which details what to include in your mntner object, how to sign and verify your commits.
60
-
61
-Common authentication methods are:
62
- - PGP Key: `auth: pgp-fingerprint <pgp-fingerprint>`
63
- - SSH Key: `auth: ssh-{rsa,ed25519} <key>`
64
-
65
-Example: data/mntner/FOO-MNT
66
-```
67
-mntner: FOO-MNT
68
-admin-c: FOO-DN42
69
-tech-c: FOO-DN42
70
-mnt-by: FOO-MNT
71
-auth: pgp-fingerprint 0123456789ABCDEF0123456789ABCDEF01234567
72
-source: DN42
73
-```
74
-
75
-### Create person objects
76
-
77
-Create a `person` object in `data/person/` for **yourself** (not your organisation/hackerspace/whatever).
78
-
79
-- use something like `<FOO>-DN42` as `nic-hdl`, it should end with `-DN42`.
80
-- the `person` field is more freeform, you may use your nickname or even real name here.
81
-- provide an email.
82
-- you may provide additional ways of contacting you, using one or more `contact` field. For instance `xmpp:[email protected]`, `irc:luke42@hackint`, `twitter: TheGreatLuke`.
83
-- you may wish to add other fields, such as `pgp-fingerprint`, `remarks`, and so on.
84
-- don't forget to set `mnt-by` to `<FOO>-MNT`.
85
-
86
-Example: data/person/FOO-DN42
87
-```
88
-person: John Doe
89
90
-nic-hdl: FOO-DN42
91
-mnt-by: FOO-MNT
92
-source: DN42
93
-```
94
-
95
----
96
-
97
-*(Optional)*
98
-**Organisations are not required if you are joining dn42 as an individual**
99
-
100
-If you intend to register resources for an organisation (e.g. your hackerspace), you must also create an `organisation` object for your organisation:
101
-
102
-- `organisation` is of the form `<ORG-FOO>`.
103
-- `org-name` should be the name of your organisation.
104
-- `e-mail` should be a contact address for your organisation, or maybe a mailing list (but people should be able to send email without subscribing).
105
-- `admin-c`, `tech-c`, and `abuse-c` may point to `person` objects responsible for the respective role in your organisation.
106
-- you may provide a website (`www` field).
107
-- don't forget to set `mnt-by` to `<FOO>-MNT`, since you're managing this object on behalf of your organisation.
108
-
109
-Example: data/organisation/ORG-EXAMPLE
110
-```
111
-organisation: ORG-FOO
112
-org-name: Foo Organisation
113
-admin-c: FOO-DN42
114
-tech-c: FOO-DN42
115
-mnt-by: FOO-MNT
116
-source: DN42
117
-```
118
-
119
-### Guidelines for future objects
120
-
121
-From now on, you should use:
122
-
123
-- `admin-c: <FOO>-DN42` and `tech-c: <FOO>-DN42` for your own resources.
124
-- `admin-c: <FOO>-DN42`, `tech-c: <FOO>-DN42` and `org: <ORG-FOO>` for the resources of your organisation.
125
-- `mnt-by: <FOO>-MNT` for all objects, so that you can edit them later.
126
-
127
-This applies to AS numbers, network prefixes, routes, DNS records...
128
-
129
-### Register an AS number
130
-
131
-To register an AS number, simply create an `aut-num` object in `data/aut-num/`.
132
-`as-name` should be a name for your AS.
133
-
134
-Your AS number can be chosen arbitrarily in the dn42 ASN space, see the [as-block objects](https://git.dn42.dev/dn42/registry/src/master/data/as-block) in the registry.
135
-
136
-**You should allocate your AS number in the 4242420000-4242423999 range**
137
-
138
-For a list of currently assigned AS numbers browse the registry data/aut-num/ directory or [online](https://explorer.burble.com/#/aut-num/).
139
-
140
-If you intend to use an ASN outside of the native dn42 ranges, please check that it doesn't clash with the [Freifunk AS-Numbers] (http://wiki.freifunk.net/AS-Nummern) or other networks (ChaosVPN, etc). For a list of ASN currently announced in dn42, see [this map](http://nixnodes.net/dn42/graph/).
141
-
142
-If unsure, ask on the mailing list or IRC.
143
-
144
-Example: data/aut-num/AS4242423999
145
-```
146
-aut-num: AS4242423999
147
-as-name: AS for FOO Network
148
-admin-c: FOO-DN42
149
-tech-c: FOO-DN42
150
-mnt-by: FOO-MNT
151
-source: DN42
152
-```
153
-
154
-### Register a network prefix
155
-
156
-#### IPv6
157
-
158
-To register an IPv6 prefix, you create an `inet6num` object. dn42 uses the fd00::/8 ([ULA](https://tools.ietf.org/html/rfc4193)) range. A single /48 allocation is typical and will likely provide more than enough room for all devices you will ever connect.
159
-
160
-dn42 is interconnected with other networks, like icvpn, which also use the same ULA range so a registration in the dn42 registry can't prevent IPv6 conflicts. A fully random prefix (see [RFC4193](https://tools.ietf.org/html/rfc4193)) is recommended; finding a conflict and needing to renumber your network is no fun.
161
-
162
-A few websites can generate random ULA prefixes for you:
163
-* [SimpleDNS](https://simpledns.com/private-ipv6)
164
-* [Ultratools](https://www.ultratools.com/tools/rangeGenerator)
165
-
166
-or a small script is available: [ulagen.py](https://git.dn42.dev/netravnen/dn42-repo-utils/src/master/ulagen.py)
167
-
168
-example: data/inet6num/fd35:4992:6a6d::_48
169
-```
170
-inet6num: fd35:4992:6a6d:0000:0000:0000:0000:0000 - fd35:4992:6a6d:ffff:ffff:ffff:ffff:ffff
171
-cidr: fd35:4992:6a6d::/48
172
-netname: FOO-NETWORK
173
-descr: Network of FOO
174
-country: XD
175
-admin-c: FOO-DN42
176
-tech-c: FOO-DN42
177
-mnt-by: FOO-MNT
178
-status: ASSIGNED
179
-source: DN42
180
-```
181
-
182
-#### IPv4 (Legacy)
183
-
184
-If you also want to register an IPv4 network prefix, simply create an `inetnum` object.
185
-
186
-You may choose your network prefix in one of the currently open netblocks. You can get a list of unassigned subnets on the following site, please mind the allocation guideline below.
187
-
188
- * [Open Netblocks](https://dn42.us/peers/free)
189
-
190
-Check the registry (data/inetnum) to make sure no-one else has allocated the same prefix. There are some IP ranges that are not open for assignments or are reserved for specific uses, so you should also check that the parent block has an 'open' policy. A quick and simple way to see the block policies is to run `grep "^policy" data/inetnum/*`.
191
-
192
-| Size | Comment |
193
-|-----:|:-------------------------|
194
-| /29 | starter pack |
195
-| /28 | usually enough |
196
-| **/27** | **default allocation** |
197
-| /26 | usually enough |
198
-| /25 | still a lot of IPs! |
199
-| /24 | are you an organization? |
200
-
201
-The current guideline is to allocate a /27 or smaller by default, keeping space for up to a /26 if possible. Don't allocate more than a /25 worth of addresses and please **think before you allocate**.
202
-
203
-dn42 typically uses point-to-point addressing in VPN tunnels making transit network unnecessary, a single IP address per host should be sufficient. If you are going to have 2-3 servers, a /28 is plenty; same will go for most home-networks. dn42 is not the public internet, but our IPv4-space is valuable too!
204
-
205
-If you need a /24 or larger, please ask in the IRC chan or on the mailing list and expect to provide justification. You should also ensure the range you've requested is in a suitable block.
206
-
207
-**Note:** Reverse DNS works with _any_ prefix length, as long as your [recursive nameserver](/services/DNS) supports [RFC 2317](https://www.ietf.org/rfc/rfc2317.txt). Don't go for a /24 _just to have RDNS_.
208
-
209
-example: data/inetnum/172.20.150.0_27
210
-```
211
-inetnum: 172.20.150.0 - 172.20.150.31
212
-cidr: 172.20.150.0/27
213
-netname: FOO-NETWORK
214
-admin-c: FOO-DN42
215
-tech-c: FOO-DN42
216
-mnt-by: FOO-MNT
217
-status: ASSIGNED
218
-source: DN42
219
-```
220
-
221
-#### Create route objects
222
-
223
-If you plan to announce your prefixes in dn42, which you probably want in most cases, you will also need to create a `route6` object for ipv6 prefixes and a `route` object for ipv4 prefixes. This information is used for Route Origin Authorization (ROA) checks. If you skip this step, your network will probably get filtered by most major peers. Checking ROA will prevent (accidental) hijacking of other people's prefixes.
224
-
225
-example: data/route6/fd35:4992:6a6d::_48
226
-```
227
-route6: fd35:4992:6a6d::/48
228
-origin: AS4242423999
229
-max-length: 48
230
-mnt-by: FOO-MNT
231
-source: DN42
232
-```
233
-
234
-example data/route/172.20.150.0_27:
235
-```
236
-route: 172.20.150.0/27
237
-origin: AS4242423999
238
-mnt-by: FOO-MNT
239
-source: DN42
240
-```
241
-
242
-#### DNS and Domain Registration
243
-
244
-*(Optional)*
245
-To register a domain name, create a `dns` object in the data/dns directory.
246
-
247
-example: data/dns/foo.dn42
248
-```
249
-domain: foo.dn42
250
-admin-c: FOO-DN42
251
-tech-c: FOO-DN42
252
-mnt-by: FOO-MNT
253
-nserver: ns1.foo.dn42 172.20.150.1
254
-nserver: ns1.foo.dn42 fd35:4992:6a6d:53::1
255
-nserver: ns2.foo.dn42 172.20.150.2
256
-nserver: ns2.foo.dn42 fd35:4992:6a6d:53::2
257
-source: DN42
258
-```
259
-
260
-You can also add DNSSEC delegations using `ds-rdata` attributes to your domain:
261
-
262
-```
263
-ds-rdata: 61857 13 2 bd35e3efe3325d2029fb652e01604a48b677cc2f44226eeabee54b456c67680c
264
-```
265
-
266
-For reverse DNS, add `nserver` attributes to you inet{,6}num objects:
267
-
268
-```
269
-inet6num: fd35:4992:6a6d:0000:0000:0000:0000:0000 - fd35:4992:6a6d:ffff:ffff:ffff:ffff:ffff
270
-cidr: fd35:4992:6a6d::/48
271
-netname: FOO-NETWORK
272
-descr: Network of FOO
273
-country: XD
274
-admin-c: FOO-DN42
275
-tech-c: FOO-DN42
276
-mnt-by: FOO-MNT
277
-status: ASSIGNED
278
-nserver: ns1.foo.dn42
279
-nserver: ns2.foo.dn42
280
-source: DN42
281
-```
282
-
283
-# Get some peers
284
-
285
-In dn42, there is no real distinction between peering and transit: in most cases, everybody serves as an upstream provider to all its peers. Note that if you have very slow connectivity to the Internet, you may want to avoid providing transit between your peers, which can be done by filtering or prepending your ASN. For the sake of sane routing, try to peer with people on the same continent to avoid inefficient routing, <50ms is a good rule of thumb. You can also look into Bird communities if you are using Bird to mark the latency for the [link](/howto/Bird-communities).
286
-
287
-You can use the peerfinder to help you find potential peers close to you: https://dn42.us/peers
288
-
289
-You can then contact them on IRC or by email. In case you're really at loss, you can also ask for peers on the mailing list.
290
-
291
-## Establishing tunnels
292
-
293
-Unless your dn42 peers are on the same network, you must establish tunnels. Choose anything you like: Wireguard, OpenVPN, GRE, GRE + IPSec, IPIP, Tinc, ...
294
-
295
-There is some documentation in this wiki, like [gre-plus-ipsec](GRE-plus-IPsec).
296
-
297
-## Running a routing daemon
298
-
299
-You need a routing daemon to speak BGP with your peers. People usually run Quagga or Bird, but you may use anything (OpenBGPD, XORP, somebody even used an old [hardware router](bgp-on-extreme-summit1i) ). See the relevant [FAQ entry](/FAQ#frequently-asked-questions_what-bgp-daemon-should-i-use).
300
-
301
-You can find [configuration examples for Bird here](bird).
302
-
303
-## Configuration Examples
304
-
305
-* [Important Network configuration](networksettings)
306
-
307
-* VPN/Tunnel:
308
- * [Wireguard](/howto/wireguard)
309
- * [Openvpn](/howto/openvpn)
310
- * [Tinc](/howto/tinc)
311
- * [IPsec with public key authentication](/howto/IPsec-with-PublicKeys)
312
-* BGP:
313
- * [Bird](/howto/Bird)
314
- * [Quagga](/howto/Quagga)
315
-* Router specific:
316
- * [dn42 on OpenWRT](OpenWRT)
317
- * [EdgeOS Configuration](EdgeOS-Config-Example)
318
- * [EdgeOS GRE/IPsec Example](EdgeOS-GRE-IPsec-Example)
319
- * [BGP on Extreme Networks Summit 1i](BGP-on-Extreme-Summit1i)
320
-
321
-# Configure DNS
322
-
323
-See [Services DNS](/Services/DNS).
324
-
325
-# Use and provide services
326
-
327
-See [internal](/internal/Internal-Services) for internal services.
328
-
329
-Don't hesitate to provide interesting services, but *please*, document them on the wiki! Otherwise, nobody will use them because nobody can guess they even exist.
services/New-DNS.md
... ...
@@ -25,7 +25,7 @@ These are simple authoritative servers for the dn42 zone, rDNS and a few DNS inf
25 25
These instances do not serve any clients. They poll the registry regularly and rebuild and resign (DNSSEC) the zones as needed. If any zone changes, all *.delegation-servers.dn42 instances are notified ([RFC1996](https://tools.ietf.org/html/rfc1996)) which then load the new zone data over AXFR ([RFC5936](https://tools.ietf.org/html/rfc5936)). The pool of masters is intentionally kept very small because of its much higher coordination needs and also the lacking support of a multi-master mode in many authoritative server implementations. The masters are only reachable over dedicated IPv6 assignments which are set up in a way that any master operator can hijack the address of a problematic master without having to wait for its operator to fix something.
26 26
27 27
# Running your own instances
28
-* If you want to run your own instances, make sure you are subscribed to the [mailinglist](//contact). It is also strongly recommended to join #dn42-dns@hackint. All changes are announced to the mailinglist but IRC makes debugging sessions much easier.
28
+* If you want to run your own instances, make sure you are subscribed to the [mailinglist](/contact). It is also strongly recommended to join #dn42-dns@hackint. All changes are announced to the mailinglist but IRC makes debugging sessions much easier.
29 29
* Choose the implementation(s) you want to use. It should support at least AXFR+NOTIFY (*.delegation-servers.dn42) or DNSSEC (*.recursive-servers.dn42).
30 30
* Check if [TODO](/TODO) already has configuration snippets for your implementation.
31 31
* If yes, download it from there and include it in the main configuration.
services/Route-Collector.md
... ...
@@ -4,7 +4,7 @@ The Global Route Collector (GRC) provides a real time view of routing and peerin
4 4
5 5
Technically the GRC is a [bird](https://bird.network.cz/) instance that anyone can peer with, it imports all routes whilst exporting none and provides a number of interfaces for querying the route data.
6 6
7
-Data from the GRC is used to generate some of the DN42 Maps (see the [Internal Services](//internal/Internal-Services) page).
7
+Data from the GRC is used to generate some of the DN42 Maps (see the [Internal Services](/internal/Internal-Services) page).
8 8
9 9
## Peering with the collector
10 10