12 Debian 10 mit Tinc und Bird.page 11 KB

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