12 Debian 10 mit Tinc und Bird.page 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409
  1. # Software
  2. - Debian 11 (bullseye), Debian 12 (bookworm) und auf dem Laptop Ubuntu 18.04, inzwischen 22.04
  3. - Tinc 1.0.36 oder tinc 1.1pre18
  4. - Bird 2.07
  5. ***** Bitte beachten, dass Bird2 installiert wird. Bei Installation von Bird1 erfolgt nur eine kryptische Fehlermeldung und Bird startet nicht.*****
  6. # Installation
  7. - Installation des Betriebssystems wird hier nicht beschrieben.
  8. - Hier werden die Schritte nach der Installation von Debian 11 (bullseye) zum Aufbau eines VPN mit Tinc und Bird beschrieben.
  9. - Für einige Befehle sind root Rechte erforderlich.
  10. - Tinc 1.0.36 und bird 2 können aus dem Debian Repository installiert werden mit
  11. sudo apt install tinc bird2
  12. - Tinc 1.1pre18 ist mit erweiterter control Schnittstelle tinc1.0.36 vorzuziehen und kann aus den Sourcen kompiliert werden:
  13. Dafür sind Pakete der Entwicklungsumgebung für Debian erforderlich
  14. sudo apt install build-essential libncurses-dev libreadline-dev liblzo2-dev libssl-dev zlib1g-dev texinfo
  15. Dann die tinc sourcen runterladen und entpacken
  16. wget http://tinc-vpn.org/packages/tinc-1.1pre18.tar.gz
  17. tar zxvf tinc-1.1pre18.tar.gz
  18. In das von dem vorigen Befehl angelegte Verzeichnis wechseln:
  19. cd tinc-1.1pre18 und configure / make / make install aufrufen
  20. ./configure \-\-prefix=/usr \-\-sysconfdir=/etc \-\-runstatedir=/run \-\-localstatedir=/var \-\-with-systemd
  21. Falls Fehler auftreten, fehlende Pakete in der xxx-dev Version nachinstallieren, dann
  22. make
  23. sudo make install
  24. Damit alles richtig angelegt wird, auch die systemctl systemd Steuerung, muss tinc 1.1pre18 mit den Parametern oben konfiguriert werden:
  25. # Allgemein
  26. - Informationen auf dieser Seite sind teilweise von anderen Wiki-Seiten übernommen.
  27. Es werden für alle Interfaces statische IPV4 Adressen verwendet, auf dem Laptop ist auch DHCP aktiv.
  28. Die hier verwendeten Adressen sind dem Wiki [IP-Adressen](40 IP-Adressen ff@home) für berghofen entnommen.
  29. # Hardware
  30. - APU mit Debian 11 (Bullseye) ohne grafische Oberfläche
  31. - Laptop mit Ubuntu 22.04
  32. Berghofen, wie auch die anderen Standorte, besteht jeweils mindestens aus der APU und einem Laptop sowie einem Internetrouter (F!Box).
  33. An jedem Standort gibt es mehrere Tincverbindungen:
  34. - lan: zwischen APU und Laptop
  35. - wan: zwischen APU und den anderen Standorten
  36. - wan: zwischen Laptop und den anderen Standorten
  37. # Dateien der APU
  38. /etc/network/interfaces
  39. # This file describes the network interfaces available on your system
  40. # and how to activate them. For more information, see interfaces(5).
  41. source /etc/network/interfaces.d/*
  42. # The loopback network interface
  43. auto lo
  44. iface lo inet loopback
  45. up ip addr add 193.43.220.130/32 dev lo
  46. # The primary network interface
  47. allow-hotplug enp1s0
  48. iface enp1s0 inet static
  49. address 192.168.178.51/24
  50. #default gateway wird von bird erledigt
  51. # gateway 192.168.178.254
  52. broadcast 192.168.178.255
  53. # dns-* options are implemented by the resolvconf package, if installed
  54. dns-nameservers 192.168.178.254
  55. dns-search fritz.box
  56. up ip rule add from all iif enp1s0 lookup 1 prio 1000 || true
  57. up ip rule add from 192.168.178.0/24 lookup 1 prio 1010 || true
  58. allow-hotplug wan
  59. iface wan inet static
  60. address 193.43.220.162/27
  61. broadcast 193.43.220.191
  62. mtu 1504
  63. allow-hotplug lan
  64. iface lan inet static
  65. address 192.168.34.1/24
  66. broadcast 192.168.34.255
  67. mtu 1504
  68. #allow-hotplug wlp5s0 # wlan z.Zt. nicht verwendet
  69. #iface wlp5s0 inet dhcp
  70. Die Schnittstellen der Interfacesdatei sind:
  71. - lo Standardloopback
  72. - enp1s0 ethernet
  73. - wan virtuelle Tinc Schnittstelle
  74. - lan virtuelle Tinc Schnittstelle
  75. - wlp5s0 nicht verwendet, auskommentierte WLAN Schnittstelle
  76. ## Für die Datenweitergabe zwischen den Netzen ist der folgende Eintrag nötig.
  77. /etc/sysctl.conf
  78. # Uncomment the next line to enable packet forwarding for IPv4
  79. net.ipv4.ip_forward=1
  80. # Tinc Verzeichnistruktur Tinc APU und Laptop Einstellungen
  81. etc/tinc/
  82. |-- lan
  83. | |-- hosts
  84. | | |-- berghofen
  85. | | `-- berglap
  86. | |-- rsa_key.priv
  87. | |-- ed25519_key.priv ## nur bei tinc 1.1
  88. | `-- tinc.conf
  89. `-- wan
  90. |-- hosts
  91. | |-- berghofen
  92. | |-- berglap
  93. | |-- hoerde
  94. | `-- nordstadt
  95. |-- rsa_key.priv
  96. |-- ed25519_key.priv ## nur bei tinc 1.1
  97. `-- tinc.conf
  98. /etc/tinc/lan/tinc.conf der APU berghofen
  99. ## APU lan tinc.conf
  100. Name = berghofen
  101. Device = /dev/net/tun
  102. Mode = switch
  103. AddressFamily = ipv4
  104. BindToAddress = 192.168.178.51
  105. Port = 10001
  106. MaxTimeout = 30
  107. GraphDumpFile = /var/run/tinc.lan.dot
  108. ConnectTo = berglap
  109. /etc/tinc/wan/tinc.conf der APU berghofen
  110. ## APU wan tinc.conf
  111. Name = berghofen
  112. Device = /dev/net/tun
  113. Mode = switch
  114. AddressFamily = ipv4
  115. BindToaddress = 192.168.178.51
  116. Port = 661
  117. MaxTimeout = 30
  118. GraphDumpFile = /var/run/tinc.wan.dot
  119. ConnectTo = hoerde
  120. ConnectTo = nordstadt
  121. /etc/tinc/lan/tinc.conf des Laptop berglap
  122. ## Laptop lan tinc.conf
  123. Name = berglap
  124. Device = /dev/net/tun
  125. Mode = switch
  126. AddressFamily = ipv4
  127. BindToAddress = 192.168.178.52
  128. Port = 10001
  129. MaxTimeout = 30
  130. GraphDumpFile = /var/run/tinc.lan.dot
  131. ConnectTo = berghofen
  132. /etc/tinc/wan/tinc.conf des Laptop berglap
  133. ## Laptop wan tinc.conf
  134. Name = berglap
  135. Device = /dev/net/tun
  136. Mode = switch
  137. AddressFamily = ipv4
  138. BindToaddress = 192.168.178.52
  139. Port = 661
  140. MaxTimeout = 30
  141. GraphDumpFile = /var/run/tinc.wan.dot
  142. ConnectTo = hoerde
  143. ConnectTo = nordstadt
  144. Da auf jedem Rechner 2 Tincinstanzen an demselben Interface laufen, werden sie durch unterschiedliche Ports getrennt: WAN mit port 661, LAN mit Port 10001.
  145. Inhalt der hosts Dateien
  146. Die Public und private Keys werden von Tinc erzeugt:
  147. bei tinc 1.0.36:
  148. tincd -n wan -K 4096
  149. tincd -n lan -K 4096
  150. bei tinc 1.1:
  151. tinc -n wan generate-keys 4096
  152. tinc -n lan generate-keys 4096
  153. Die ED25519PublicKey Zeile wird nur bei tinc 1.1 erzeugt/verwendet.
  154. Für hosts, die per ConnectTo in der tinc.conf angesprochen werden, ist in der zugehörigen hosts Datei die IPadresse des hosts und der port erforderlich für die aktive Verbindungsaufnahme. Mit anderen Worten: wenn Gerät1 zu Gerät2 verbinden will, müssen im öffentlichen Schlüssel von Gerät2, der von Gerät2 auf Gerät1 kopiert wurde, die Adresse und der Port des Zielrechners, also von Gerät2 eingefügt werden.
  155. /etc/tinc/lan/hosts/berghofen auf APU und laptop
  156. Address = 192.168.178.51
  157. Port = 10001
  158. -----BEGIN RSA PUBLIC KEY-----
  159. Schlüsseldaten
  160. -----END RSA PUBLIC KEY-----
  161. Ed25519PublicKey = WmAmMY95+B/A9FDQz7ZiV6WQcG2qAUUclRP52dwXSdD
  162. /etc/tinc/lan/hosts/berglap auf APU und laptop
  163. Address = 192.168.178.52
  164. Port = 10001
  165. -----BEGIN RSA PUBLIC KEY-----
  166. Schlüsseldaten
  167. -----END RSA PUBLIC KEY-----
  168. Ed25519PublicKey = WCkEAe/gohI7JAGLiHPKdE+ayxYrG1wuTfQQijAROuD
  169. /etc/tinc/wan/hosts/berghofen auf APU
  170. -----BEGIN RSA PUBLIC KEY-----
  171. Schlüsseldaten
  172. -----END RSA PUBLIC KEY-----
  173. Ed25519PublicKey = Tkhp7t+MsmQKsWIkO5qimTKoWdkvRigKwctxtfOu2MF
  174. /etc/tinc/wan/hosts/hoerde auf APU und berglap
  175. Address = 130.180.53.22
  176. Port = 661
  177. -----BEGIN RSA PUBLIC KEY-----
  178. Schlüsseldaten
  179. -----END RSA PUBLIC KEY-----
  180. Ed25519PublicKey = MjaltxtfPP1SdHgNH/dUuHmbYDXFdZMEUUbl0Qi/YCA
  181. /etc/tinc/wan/hosts/nordstadt auf APU und berglap
  182. Address = 91.204.4.53
  183. Port = 661
  184. -----BEGIN RSA PUBLIC KEY-----
  185. Schlüsseldaten
  186. -----END RSA PUBLIC KEY-----
  187. Ed25519PublicKey = 4znU87BKnctOFb+/JQhIltGtYN3h3czOVInolRPWgvA
  188. /etc/tinc/wan/hosts/berglap auf berglap
  189. -----BEGIN RSA PUBLIC KEY-----
  190. Schlüsseldaten
  191. -----END RSA PUBLIC KEY-----
  192. Ed25519PublicKey = 4znU87BKnctOFb+/JQhIltGtYN3h3czOVInolRPWgvA
  193. Die Tinc Instanzen können auf APU und berglap gestartet werden mit:
  194. systemctl start tinc
  195. systemctl start tinc@lan
  196. systemctl start tinc@wan
  197. Beispielhaft tinc@lan abfragen:
  198. systemctl status tinc@lan
  199. tinc@lan.service - Tinc net lan
  200. Loaded: loaded (/lib/systemd/system/tinc@.service; enabled; vendor preset: enabled)
  201. Active: active (running) since Tue 2022-03-29 21:26:01 CEST; 1 months 0 days ago
  202. Docs: info:tinc
  203. man:tinc(8)
  204. man:tinc.conf(5)
  205. http://tinc-vpn.org/docs/
  206. Main PID: 472 (tincd)
  207. Tasks: 1 (limit: 4657)
  208. Memory: 4.1M
  209. CPU: 22min 34.347s
  210. CGroup: /system.slice/system-tinc.slice/tinc@lan.service
  211. └─472 /usr/sbin/tincd -n lan -D
  212. ...
  213. Dabei ist das enabled in der Loaded Zeile wichtig.
  214. Falls die Statusabfrage eine Fehlermeldung "Bogus data ..." bringt, alle Schlüssel,
  215. also auch die privaten, löschen und wie oben beschrieben neu erzeugen und verteilen.
  216. Um die Programme automatisch nach einem reboot zu starten, eventuell
  217. falls nicht durch die Installation schon eingerichtet:
  218. systemctl enable tinc
  219. systemctl enable tinc@lan
  220. systemctl enable tinc@wan
  221. # Bird auf der APU berghofen und Laptop berglap
  222. /etc/iproute2/rt_tables identisch auf APU / laptop
  223. #
  224. # reserved values
  225. #
  226. 255 local
  227. 254 main
  228. 253 default
  229. 0 unspec
  230. #
  231. # local
  232. #
  233. 1 tinc
  234. - Die bird.conf des laptops ist bis auf andere IP Adressen identisch
  235. /etc/bird/bird.conf
  236. # bird.conf Alle Anpassungen als defines
  237. # damit keine übersehen wird
  238. define publicIP = 193.43.220.130;
  239. define publicIP_32 = 193.43.220.130/32;
  240. define isprouter = 192.168.178.254;
  241. # ab hier passt alles für unsere lan/wan Netze
  242. router id publicIP;
  243. # log syslog { debug, info, trace, remote }; /* optional */
  244. define AS35675_all = [
  245. 193.43.220.0/23
  246. ];
  247. define AS35675_any = [
  248. 193.43.220.0/23+
  249. ];
  250. protocol device device0 {
  251. scan time 10;
  252. }
  253. /* wg. BSD: */
  254. protocol direct direct0 {
  255. ipv4;
  256. }
  257. protocol kernel kernel0 {
  258. learn on;
  259. scan time 120;
  260. ipv4 {
  261. import all;
  262. export where source != RTS_DEVICE;
  263. };
  264. }
  265. # erstellt neue routing tabelle
  266. ipv4 table fib1table;
  267. #RTS route source
  268. #import / export
  269. protocol kernel kernel1 {
  270. kernel table 1;
  271. learn on;
  272. scan time 120;
  273. ipv4 {
  274. table fib1table;
  275. import all;
  276. export where source != RTS_DEVICE;
  277. };
  278. }
  279. protocol static static1 {
  280. ipv4 {
  281. table fib1table;
  282. };
  283. route 0.0.0.0/0 via isprouter; /* zur F!Box */
  284. }
  285. protocol ospf ospfwan {
  286. ipv4 {
  287. import all;
  288. export where net ~ AS35675_any;
  289. };
  290. area 0.0.0.0 {
  291. stubnet publicIP_32 { cost 1; };
  292. interface "wan" {
  293. type broadcast;
  294. cost 100;
  295. };
  296. interface "lan" {
  297. type broadcast;
  298. cost 10;
  299. };
  300. };
  301. }
  302. Den bird starten und eventuell rebootfest machen:
  303. systemctl start bird
  304. systemctl enable bird