diff --git a/doc/discovery.md b/doc/discovery.md index 5b8576ba..28cb2966 100644 --- a/doc/discovery.md +++ b/doc/discovery.md @@ -16,14 +16,14 @@ seen in the response. In the example below, the PC is connected to Infix via interface *tap0* (*tap0* is *if1* in Figure 1) and Infix responds with address -*fe80::ff:fe00:0*. +*fe80::ff:fec0:ffed*. ``` linux-pc:# ping -6 -L -c 3 ff02::1%tap0 PING ff02::1%tap0(ff02::1%tap0) 56 data bytes -64 bytes from fe80::ff:fe00:0%tap0: icmp_seq=1 ttl=64 time=0.558 ms -64 bytes from fe80::ff:fe00:0%tap0: icmp_seq=2 ttl=64 time=0.419 ms -64 bytes from fe80::ff:fe00:0%tap0: icmp_seq=3 ttl=64 time=0.389 ms +64 bytes from fe80::ff:fec0:ffed%tap0: icmp_seq=1 ttl=64 time=0.558 ms +64 bytes from fe80::ff:fec0:ffed%tap0: icmp_seq=2 ttl=64 time=0.419 ms +64 bytes from fe80::ff:fec0:ffed%tap0: icmp_seq=3 ttl=64 time=0.389 ms --- ff02::1%tap0 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2043ms @@ -34,9 +34,9 @@ linux-pc:# The PC could connect then connect to Infix, e.g., using SSH. ``` -linux-pc:# ssh admin@fe80::ff:fe00:0%tap0 -admin@fe80::ff:fe00:0%tap0's password: admin -admin@infix-00-00-00:~$ +linux-pc:# ssh admin@fe80::ff:fec0:ffed%tap0 +admin@fe80::ff:fec0:ffed%tap0's password: admin +admin@infix-c0-ff-ee:~$ ``` ## Discovery mechanisms available in Infix @@ -55,18 +55,18 @@ linux-pc:# tcpdump -i tap0 -Qin -v ether proto 0x88cc tcpdump: listening on tap0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:51:52.061071 LLDP, length 193 Chassis ID TLV (1), length 7 - Subtype MAC address (4): 02:00:00:00:00:00 (oui Unknown) + Subtype MAC address (4): 02:00:00:c0:ff:ee (oui Unknown) Port ID TLV (2), length 7 - Subtype MAC address (3): 02:00:00:00:00:00 (oui Unknown) + Subtype MAC address (3): 02:00:00:c0:ff:ee (oui Unknown) Time to Live TLV (3), length 2: TTL 120s - System Name TLV (5), length 14: infix-00-00-00 + System Name TLV (5), length 14: infix-c0-ff-ee System Description TLV (6), length 91 Infix by KernelKit Linux 5.19.17 #1 SMP PREEMPT_DYNAMIC Wed Jun 7 08:47:23 CEST 2023 x86_64 System Capabilities TLV (7), length 4 System Capabilities [Bridge, WLAN AP, Router, Station Only] (0x009c) Enabled Capabilities [Station Only] (0x0080) Management Address TLV (8), length 24 - Management Address length 17, AFI IPv6 (2): fe80::ff:fe00:0 + Management Address length 17, AFI IPv6 (2): fe80::ff:fec0:ffed Interface Index Interface Numbering (2): 2 Port Description TLV (4), length 4: eth0 Organization specific TLV (127), length 9: OUI IEEE 802.3 Private (0x00120f) @@ -97,11 +97,11 @@ linux-pc:# sudo tcpdump -i tap0 -Qin -v ether proto 0x88cc tcpdump: listening on tap0, link-type EN10MB (Ethernet), snapshot length 262144 bytes 15:46:07.908665 LLDP, length 207 Chassis ID TLV (1), length 7 - Subtype MAC address (4): 02:00:00:00:00:00 (oui Unknown) + Subtype MAC address (4): 02:00:00:c0:ff:ee (oui Unknown) Port ID TLV (2), length 7 - Subtype MAC address (3): 02:00:00:00:00:00 (oui Unknown) + Subtype MAC address (3): 02:00:00:c0:ff:ee (oui Unknown) Time to Live TLV (3), length 2: TTL 120s - System Name TLV (5), length 14: infix-00-00-00 + System Name TLV (5), length 14: infix-c0-ff-ee System Description TLV (6), length 91 Infix by KernelKit Linux 5.19.17 #1 SMP PREEMPT_DYNAMIC Wed Jun 7 08:47:23 CEST 2023 x86_64 System Capabilities TLV (7), length 4 @@ -144,28 +144,28 @@ be used to search for devices advertising their services via mDNS. ``` linux-pc:# avahi-browse -ar -+ tap0 IPv6 infix-00-00-00 SFTP File Transfer local -+ tap0 IPv4 infix-00-00-00 SFTP File Transfer local -+ tap0 IPv6 infix-00-00-00 SSH Remote Terminal local -+ tap0 IPv4 infix-00-00-00 SSH Remote Terminal local -= tap0 IPv4 infix-00-00-00 SFTP File Transfer local - hostname = [infix-00-00-00.local] ++ tap0 IPv6 infix-c0-ff-ee SFTP File Transfer local ++ tap0 IPv4 infix-c0-ff-ee SFTP File Transfer local ++ tap0 IPv6 infix-c0-ff-ee SSH Remote Terminal local ++ tap0 IPv4 infix-c0-ff-ee SSH Remote Terminal local += tap0 IPv4 infix-c0-ff-ee SFTP File Transfer local + hostname = [infix-c0-ff-ee.local] address = [10.0.1.1] port = [22] txt = [] -= tap0 IPv4 infix-00-00-00 SSH Remote Terminal local - hostname = [infix-00-00-00.local] += tap0 IPv4 infix-c0-ff-ee SSH Remote Terminal local + hostname = [infix-c0-ff-ee.local] address = [10.0.1.1] port = [22] txt = [] -= tap0 IPv6 infix-00-00-00 SFTP File Transfer local - hostname = [infix-00-00-00.local] - address = [fe80::ff:fe00:0] += tap0 IPv6 infix-c0-ff-ee SFTP File Transfer local + hostname = [infix-c0-ff-ee.local] + address = [fe80::ff:fec0:ffed] port = [22] txt = [] -= tap0 IPv6 infix-00-00-00 SSH Remote Terminal local - hostname = [infix-00-00-00.local] - address = [fe80::ff:fe00:0] += tap0 IPv6 infix-c0-ff-ee SSH Remote Terminal local + hostname = [infix-c0-ff-ee.local] + address = [fe80::ff:fec0:ffed] port = [22] txt = [] ^C @@ -178,27 +178,27 @@ addresses. This function allows users to confirm that addresses are mapped correctly. ``` -linux-pc:# avahi-resolve-host-name infix-00-00-00.local -infix-00-00-00.local 10.0.1.1 +linux-pc:# avahi-resolve-host-name infix-c0-ff-ee.local +infix-c0-ff-ee.local 10.0.1.1 linux-pc:# ``` -Resolved addresses can also be used for tasks like pinging or -establishing an SSH connection to the device, as demonstrated below: +Thanks to mDNS we can use the advertised name instead of the IP +address for operations like `ping` and `ssh` as shown below: ``` -linux-pc:# ping infix-00-00-00.local -c 3 -PING infix-00-00-00.local (10.0.1.1) 56(84) bytes of data. +linux-pc:# ping infix-c0-ff-ee.local -c 3 +PING infix-c0-ff-ee.local (10.0.1.1) 56(84) bytes of data. 64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=0.852 ms 64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=1.12 ms 64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=1.35 ms ---- infix-00-00-00.local ping statistics --- +--- infix-c0-ff-ee.local ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2003ms rtt min/avg/max/mdev = 0.852/1.105/1.348/0.202 ms -linux-pc:# ssh admin@infix-00-00-00.local -(admin@infix-00-00-00.local) Password: +linux-pc:# ssh admin@infix-c0-ff-ee.local +(admin@infix-c0-ff-ee.local) Password: .-------. | . . | Infix -- a Network Operating System |-. v .-| https://kernelkit.org @@ -211,21 +211,19 @@ linux-pc:# To disable mDNS/mDNS-SD, type the commands: ``` -admin@infix-00-00-00:/> configure -admin@infix-00-00-00:/config/> set mdns enabled false -admin@infix-00-00-00:/config/> leave +admin@infix-c0-ff-ee:/> configure +admin@infix-c0-ff-ee:/config/> no mdns +admin@infix-c0-ff-ee:/config/> leave ``` -#### Short Hostname +#### Human-Friendly Hostname Alias -With the help of the mdns-alias, mDNS functionality allows the device -to be accessible as *infix.local* rather than its full hostname -(e.g., infix-00-00-00.local). This alias works seamlessly on a network -with a single Infix device. However, if multiple Infix devices are -present (e.g., infix-00-00-00.local, infix-01-01-01.local), each device -requires a unique hostname to avoid conflicts, as infix.local would not -uniquely identify multiple devices. The shortened names can also be -used for actions like pinging or establishing an SSH connection: +Each Infix unit will advertise itself as *infix.local*, in addition to +its full hostname (e.g., *infix-c0-ff-ee.local* or *foo.local*). This +alias works seamlessly on a network with a single Infix device, and +makes it easy to connect when the exact hostname is not known in +advance. The examples below show how the alias can be used for +actions such as pinging or establishing an SSH connection: ``` linux-pc:# ping infix.local -c 3 @@ -239,7 +237,7 @@ PING infix.local (10.0.1.1) 56(84) bytes of data. rtt min/avg/max/mdev = 0.751/1.482/2.281/0.626 ms linux-pc:# ssh admin@infix.local -(admin@infix-00-00-00.local) Password: +(admin@infix.local) Password: .-------. | . . | Infix -- a Network Operating System |-. v .-| https://kernelkit.org @@ -250,29 +248,31 @@ Run the command 'cli' for interactive OAM linux-pc:# ``` -#### Web Service Availability +When multiple Infix devices are present on the LAN the alias will not +uniquely identify a device; *infix.local* will refer to any of the +Infix devices, likely the one that first appeared. -The web service on the Infix device is primarily served by the nginx -daemon, which acts as a frontend. It routes incoming requests to the -netbrowse service, a network browser responsible for providing the web -management and console interfaces. This layered approach allows nginx -to handle HTTP/HTTPS requests and forward them to netbrowse, accessible -via the https://network.local portal. +> When multiple Infix units are present, use the full hostname (e.g., +> *infix-c0-ff-ee.local* or *foo.local*) rather than the alias +> infix.local to deterministically connect to a unit. -Type https://network.local in the browser and the following should be -shown: -![Web Service - network.local](img/network-local.svg) +#### Discovery via netbrowse service -The web interface shows all mDNS hosts and their services advertised -on the network. At this point it is possible to further navigate to -web management interface or remote (web) console. +Infix provides a *netbrowse* facility, where services advertised via mDNS +are collected and presented via a web portal (https://network.local). -To disable the web server, use the following: +![Netbrowse Service - network.local](img/network-local.png) + +When multiple Infix units are present on the LAN, *network.local* will +likely resolve to the first unit that appeared. + +To disable the netbrowse service, the following commands can be used: ``` -admin@infix-00-00-00:/> configure -admin@infix-00-00-00:/config/> set web netbrowse enabled false -admin@infix-00-00-00:/> leave +admin@infix-c0-ff-ee:/> configure +admin@infix-c0-ff-ee:/config/> edit web +admin@infix-c0-ff-ee:/config/web/> no netbrowse +admin@infix-c0-ff-ee:/config/web/> leave ``` [^2]: [mdns-scan](http://0pointer.de/lennart/projects/mdns-scan/): a diff --git a/doc/img/network-local.png b/doc/img/network-local.png new file mode 100644 index 00000000..112ea5d6 Binary files /dev/null and b/doc/img/network-local.png differ diff --git a/doc/img/network-local.svg b/doc/img/network-local.svg deleted file mode 100644 index b1dbb3c3..00000000 --- a/doc/img/network-local.svg +++ /dev/null @@ -1,3817 +0,0 @@ - - - - - - - - -