|
NAMEuftpproxyd - Encrypted UDP based ftp with multicast - proxy daemonSYNOPSISuftpproxyd { -s { dest | fp=fingerprint } | -c | -r } [ -d ] [ -p port ] [ -t ttl ] [ -Q dscp ] [ -N priority ] [ -O out_multi_interface ] [ -U UID ] [ -q dest_port ] [ -m ] [ -x log_level ] [ -H hb_server[:port][,hb_server[:port]...] ] [ -g max_log_size ] [ -n max_log_count ] [ -h hb_interval ] [ -B udp_buf_size ] [ -L logfile ] [ -P pidfile ] [ -C clientlist_file ] [ -o ] [ -S serverlist_file ] [ -k keyfile[,keyfile...] ] [ -K rsa:key_len | ec:curve[,rsa:key_len | ec:curve...]] [ -e ecdh_curve ] [ -I interface[,interface...] ] [ -M pub_mcast_addr[,pub_mcast_addr...] ]DESCRIPTIONuftpproxyd is the proxy daemon of the UFTP suite. It performs multicast tunneling, NAT traversal, and client response aggregation. It is used in one of two scenarios. The first is when the server and one or more clients are on separate networks and cannot be reached directly via multicast, and/or one or both sides are behind a firewall or NAT'ed. This allows applications to function when there is little to no access to routers. The second is when the server can contact clients directly but there are too many of them to directly handle the responses. This allows greater scalability.The proxy can run in one of three modes: a server proxy, a client proxy, or response proxy. A server proxy is typically local to a server and acts as the upstream end of a multicast tunnel. It listens on the public multicast address (and private multicast address when specified) and forwards downstream packets to a specific address downstream. Upstream packets are forwarded back where the announcement originated from. A client proxy is typically local to one or more clients and forms the downstream end of a multicast tunnel. It receives unicast data from one or more server proxies and forwards downstream traffic to the multicast address specified in the packet header. Upstream traffic from clients is gathered and forwarded back where the announcement came from as an aggregated response. If a client proxy is behind a firewall, the proxy can send a heartbeat message to the upstream proxy to make a pinhole in the firewall that the upstream server proxy can connect to. If the client proxy is also NATed, the upstream server proxy may not know the IP/port of the client proxy, so the server proxy can be configured to wait for a heartbeat message, and use the IP/port the heartbeat came from as its downstream address. If the server proxy is also behind a firewall or NAT, a second server proxy on a machine with a publicly accessible IP can be inserted between the first server proxy and the client proxy. In this case, the first server proxy is set up to use the second as its downstream address, and the second server proxy is set up to use the first heartbeat it receives from a client proxy as its downstream address. A response proxy functions as a response aggregator in situations where the server has direct multicast accessibility to clients but the number of clients are too high for the server to handle itself. It listens on the public multicast address (and private multicast address when specified), but does not forward packets from the server since those packets reach clients directly. It does however send some messages directly to clients in the process of establishing encryption keys. Upstream traffic from clients is gathered and forwarded back where the announcement came from as an aggregated response. Messages sent directly from response proxies to clients use multicast (either the primary public address, or the private address, depending on the message). EXAMPLESServer / Client ProxiesFigure 1 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Network A x x ---------- x x | Server | x x ---------- x x | x x | multicast x x | x x |----------------------------------------- x x | | | x x v v v x x ---------------- ---------------- ---------- x x | Server Proxy | | Server Proxy | | Client | x x ---------------- ---------------- ---------- x x | | x x | unicast | unicast x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | ------------ | | xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx x | Network B x x | Network C x x v x x v x x ---------------- x x ---------------- x x | Client Proxy | x x | Client Proxy | x x ---------------- x x ---------------- x x | x x | x x | multicast x x | multicast x x | x x | x x |------------- x x |------------ x x | | x x | | x x v v x x v v x x ---------- ---------- x x ---------- ---------- x x | Client | | Client | x x | Client | | Client | x x ---------- ---------- x x ---------- ---------- x x x x x xxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx In Figure 1 above there are a server and five clients. The server and one client are on network A, two clients are on network B, and two clients are on network C. There is one client proxy on network B and one on network C. On network A are two server proxies, one configured to send to the client proxy on network B and the other configured to send to the client proxy on network C. Client proxies normally should NOT run on the same machine as a client. Doing so can result in the server getting confused when it sees messages coming from a proxy and a client with the same IP and therefore cannot tell the difference. This can only work if the machine has multiple IPs and the client proxy and client listen on different IPs. NOTE: When using proxies in environments where private IP addresses are in use (10.x.x.x, 172.16-31.x.x, 192.168.x.x), it is strongly recommended to assign a unique ID to each client and client proxy, and for servers to call out clients by unique ID instead of name/IP. This prevents IP address collisions at the server between two clients with the same local IP. Response ProxiesFigure 2 ---------- |-->| Server | | ---------- | | | | multicast | | | |-------------------------------------- | | | | | | | v | v | | ------------------ | ------------------ | | | Response Proxy | | | Response Proxy | | v ------------------ v ------------------ | ---------- ^ | ---------- ^ | | | Client | | | | Client | | | | ---------- | | ---------- | | | | | | | | | | | | | | | | | ----------- | ------------ | | client response | client response | | | | | proxy response | | ----------------------------------------------------- Figure 2 shows a simplified setup involving a server, two clients, and two response proxies, all on the same network segment. In this environment, multicast messages from each proxy reach both clients, not just the client it serves. Figure 3 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Network A x x ---------- x x ->| Server |<---------------------------------- x x | ---------- | x x | | | x x | | multicast | x x | | | x x | | | x x | ------------------------------------------ | x x | | | | | | x x | | v | v | x x | | ------------------ | ------------------ x x | | | Response Proxy | | | Response Proxy | x x | | ------------------ | ------------------ x x | | | ^ | ^ x x |/|\---- | | | x x | | ----/|\----------- x x | | | | x x | | | | x xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx|xxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | | | ------------|| | xxxxxxxxxxxxxxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxxxxxxxxx x | Network B x || x | Network C x x | x || x | x x | x || x | x x ------------------ x || x ------------------ x x | | x || x | | x x v v x || x v v x x ---------- ---------- x || x ---------- ---------- x x | Client | | Client | x || x | Client | | Client | x x ---------- ---------- x || x ---------- ---------- x x | | x || x | | x x -------------------x-||-x-------------------- x x x x x xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx In Figure 3, there are two response proxies local to the server and four clients in two remote networks, with each response proxy handling the clients from one network. Multicast messages from each proxy would reach all clients, not just the clients it serves. Even though the proxies are offloading work from the server in handling client responses, the server's network still has to handle responses from all clients since the proxies are on the server's network. As a result, this setup has limited scalability. Figure 4 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx x Network A x x ---------- x x ->| Server |<--------------x---------------- x | ---------- x | x | | x | x | | multicast x | x | | x | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | | | |-------------------------- | | | | | xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx x | | Network B1 x x | | Network C1 x x | ------- x x |------- | x x | | | x x | | | x x | | v x x | v | x x | | ------------------ x x | ------------------ x x | | | Response Proxy | x x | | Response Proxy | x x | | ------------------ x x | ------------------ x x | | | ^ x x | ^ x x |/|\---- | x x | | x x | | x --x-/|\----------- x x | | x | x | x x | | x | x | x xxxxxxxxxxxxxxxxxxxxxxxxxxxx | xxxxxxxxxxxxxxxxxxxxxxxxxxxx | | | | | ------------|| | xxxxxxxxxxxxxxxxxxxxxxxxxxxx || xxxxxxxxxxxxxxxxxxxxxxxxxxxx x | Network B2 x || x | Network C2 x x | x || x | x x | x || x | x x ------------------ x || x ------------------ x x | | x || x | | x x v v x || x v v x x ---------- ---------- x || x ---------- ---------- x x | Client | | Client | x || x | Client | | Client | x x ---------- ---------- x || x ---------- ---------- x x | | x || x | | x x -------------------x-||-x-------------------- x x x x x xxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxx In Figure 4, each proxy is at least one hop away from the clients it serves, and at least one hop away from the server. In this case, multicast messages from each proxy only go to the clients it serves. Also, since the proxies are not on the same network as the server, messages coming from the client don't have any effect on the server's local network. A setup like this is the most scalable, and is the most flexible since another server on a different network can utilize the response proxies in the same way. OPTIONSThe following options are supported:
EXIT STATUSThe following exit values are returned:
SEE ALSOuftp(1), uftpd(1), uftp_keymgt(1).NOTESThe latest version of UFTP can be found at http://uftp-multicast.sourceforge.net. UFTP is covered by the GNU General Public License. Commercial licenses and support are available from Dennis Bush (bush@tcnj.edu).
Visit the GSP FreeBSD Man Page Interface. |