FreeBSD Manual Pages
SC_REMOTED(1) General Commands Manual SC_REMOTED(1) NAME sc_remoted -- interact with a collection of remotely controlled scamper instances SYNOPSIS sc_remoted [-?46Dv] [-O options] [-M mux-socket] [-P [ip:]port] [-U unix-dir] [-C tls-ca] [-c tls-certificate] [-p tls-privatekey] [-m meta-file] [-e pid-file] [-Z zombie-time] DESCRIPTION The sc_remoted utility provides the ability to connect to a scamper(1) instance running remotely and interact with it by issuing commands and receiving results in warts format. The options are as follows: -? prints a list of command line options and a synopsis of each. -v prints the version of sc_remoted and exits. -D causes sc_remoted to operate as a daemon. -4 causes sc_remoted to only listen for IPv4-based connections. -6 causes sc_remoted to only listen for IPv6-based connections. -O options allows the behavior of sc_remoted to be further tailored. The current choices for this option are: - allowgroup: allow members of the unix domain socket's group to access to the unix domain sockets created by sc_remoted - allowother: allow anyone on the system access to the unix domain sockets created by sc_remoted - debug: print debugging messages - select: use select(2) with all sockets, rather than epoll(2) or kqueue(2) - skipnameverification: do not verify the monitor name, if presented, against the name in the certificate that the client presents if doing client TLS authentication. -P [ip:]port specifies the IP address and port on the local host where sc_remoted should listen for incoming connections. If an IP address is not specified, sc_remoted will listen on all avail- able IP addresses for incoming connections. -M mux-socket specifies location in the file system on the local host where sc_remoted should provide a multiplexed interface for access to remote hosts. -U unix-dir specifies the directory on the local host where sc_remoted should place individual unix domain sockets corresponding to individual remote hosts. -C tls-ca specifies the certificate authority certificate file in PEM format for sc_remoted to use to verify client certificates. -c tls-certificate specifies the server certificate file in PEM format to adver- tise to remote scamper(1) instances. -p tls-privatekey specifies the private key file in PEM format that corresponds to the certificate file. This key should have a passphrase. sc_remoted will prompt for the passphrase when starting up. -e pid-file specifies the name of a file to write the process ID to. -m meta-file specifies the name of a file containing meta data for remote hosts. -Z zombie-time specifies the length of time sc_remoted will retain state for a disconnected scamper(1) instance, allowing it to resume. By default sc_remoted retains state for 15 minutes. sc_remoted can wait for up to three hours for a remote scamper instance to resume. EXAMPLES The intended use of the remote control socket built into scamper(1) is as follows. A central server with IP addresses 192.0.2.1 and 2001:db8::1 runs a sc_remoted process listening on a port for remote scamper process, placing control sockets in a specified directory: sc_remoted -P 31337 -U remote-socket-dir Then, a remote host with IP address 198.51.100.55 runs scamper and con- nects to the remote controller: scamper -R 192.0.2.1:31337 The sc_remoted process places a unix domain socket in the directory corresponding to the remote process. The name corresponds to the source IP address and port the remote scamper process connected to con- troller with. If the scamper process used source port 1025, then the unix domain socket's name will be remote-socket-dir/198.51.100.55:1025 If a second remote host with IP address 2001:db8:1234::1 runs scamper and connects to the remote controller: scamper -R [2001:db8::1]:31337 The same sc_remoted process will place another unix domain socket in the directory corresponding to the remote process. If the scamper process used source port 1026, then the unix domain socket's name will be remote-socket-dir/2001:db8:1234::1.1026 If scamper is started with -M monitor-name, then it will pass the moni- tor name sc_remoted, which will use it in the unix domain socket's name. For example, if scamper is started as follows: scamper -R [2001:db8::1]:31337 -M foo.bar then the unix domain socket's name will be remote-socket-dir/foo.bar-2001:db8:1234::1.1026 Because providing a unix domain socket per remote scamper process scales poorly in its use of file descriptors, it is recommended that sc_remoted provides a multiplexed interface to the remote scamper in- stances over a single unix domain socket, as follows: sc_remoted -P 31337 -M mux-socket It is possible to simultaneously provide a mux-socket and individual unix domain sockets in a separate directory, as follows: sc_remoted -P 31337 -M mux-socket -U remote-socket-dir PROVIDING METADATA TO REMOTE CONTROLLER USERS sc_remoted can provide metadata for remote scamper instances to users of the multiplexed interface. libscamperctrl(3) provides interfaces to use the multiplexed interface and obtain metadata at runtime. To asso- ciate metadata with remote scamper instances, the instances must be started with unique monitor-name values, such as scamper -R 192.0.2.1:31337 -M foo.bar which self-identifies as foo.bar. Given a sc_remoted process started as follows: sc_remoted -M mux-socket -m meta.txt -P 31337 with meta.txt containing metadata formatted as follows: foo.bar asn4 64504 foo.bar cc nz foo.bar st wko foo.bar place Hamilton foo.bar latlong -37.7875184,175.2783528 foo.bar shortname foo foo.bar tag os:freebsd foo.bar tag hardware:pi4 then users can programmatically identify that the remote system named foo.bar is located in New Zealand, and is a Raspberry Pi4 running FreeBSD. USING TRANSPORT LAYER SECURITY sc_remoted and scamper support the use of transport layer security (TLS) using OpenSSL to authenticate and encrypt communications between sc_remoted and scamper. To use this support requires a certificate signed by a certificate authority. Scamper will verify the certificate presented by sc_remoted and disconnect if the certificate presented by sc_remoted cannot be validated. Generating a certificate that will be accepted by scamper requires you to create a certificate request and pass it for signing to a certifi- cate authority. To generate a private key in file remotepriv.pem, and a request to sign the key in remotereq.pem: openssl req -new -keyout remotepriv.pem -out remotereq.pem and then send the remotereq.pem file to the certificate authority for signing. Do not send remotepriv.pem; that key must remain private to you. When openssl prompts for a passphrase, choose a passphrase that is unique and keep the passphrase secret. When your chosen certificate authority signs your private key, it will return a file which we will call remotecert.pem. Both remotecert.pem and remotepriv.pem are re- quired parameters to sc_remoted to enable TLS support: sc_remoted -P 31337 -U remote-socket-dir -c remotecert.pem -p remotepriv.pem and then run scamper as follows: scamper -R example.com:31337 sc_remoted can also require that scamper present a certificate during the TLS handshake with the -C parameter: sc_remoted -P 31337 -U remote-socket-dir -c remotecert.pem -p remotepriv.pem -C remoteca.pem In this case, sc_remoted requires that the scamper instance passes valid certificate signed by remoteca.pem, and that the certificate con- tains a monitor-name matching the monitor-name subsequently provided by scamper to sc_remoted. The scamper-side of this process looks like: scamper -R example.com:31337 -O client-certfile=cert.pem -O client-privfile=key.pem -M foo.bar SIGNAL HANDLERS sc_remoted installs handlers for two signals: SIGINT and SIGHUP. SIG- INT causes sc_remoted to exit gracefully. SIGHUP causes sc_remoted to reload the TLS certificate and private key, without interrupting exist- ing TLS connections, and reload the metadata file. SEE ALSO libscamperctrl(3), scamper(1), sc_attach(1), sc_wartsdump(1), warts(5), openssl(1) AUTHORS sc_remoted was written by Matthew Luckie <mjl@luckie.org.nz>. FreeBSD Ports 14.quarterly February 26, 2025 SC_REMOTED(1)
NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | PROVIDING METADATA TO REMOTE CONTROLLER USERS | USING TRANSPORT LAYER SECURITY | SIGNAL HANDLERS | SEE ALSO | AUTHORS
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=sc_remoted&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>
