h323-proxy, test-h323 — H.323 Protocol Family proxy
h323-proxy
[-hv
] [-d
] dbglev
-f
cfgfile
test-h323
[-hv
] [-d
] dbglev
-f
[cfgfile
-r
] [-t
]test_expr
The h323-proxy provides proxying service for the set of multimedia communication protocols called H.323 protocols. Current version covers many popular applications like Voice-over-IP (VOIP), Microsoft Netmeeting or GnomeMeeting. Proxy handles protocol extensions like H.245 tunneling or Fast Start processing and can co-operate with the gk-proxy(8) — proxying clients' registration requests to gatekeepers. Proxy controls H.225 and H.245 sessions and manages logical data channels opened according to H.245 commands.
Program test-h323 tests syntax and partially semantics of the configuration; for test expression syntax, see test-expr(5).
Proxy reads its configuration file and starts listening
on specified IP sockets (address/port couples), as specified in
the listen-on
configuration section (see listen-on(5)).
Format of the configuration file is described in h323-proxy.cfg(5).
The h323-proxy uses only single layer ACL
(see access-control(7)) called session-acl
.
When a connection arrives, configuration is consulted,
proper session-acl
is selected
and according to it, connection is allowed or not.
When a transparent connection arrives (i.e., a connection destined for another server is transparently redirected to h323-proxy — see transparency(7) for details), the proxy will connect to the original destination server.
When a non-transparent connection arrives
(i.e., a connection destined directly for one of the sockets
h323-proxy is listening on)
and is allowed by policy, either the proxy must be configured to connect
to a specific remote server
by the plug-to
configuration directive
(see below) or the caller must identify destination in H.245 Setup
packet.
If a plug-to
directive is used for a transparent
connection, it has precedence over the original destination.
This means that h323-proxy will ignore
the original destination
and connect to the plug-to
server.
The proxy uses common Kernun mechanism for listening on its sockets, forking new processes as needed and killing old redundant processes, optionally changing root directory and running with alternative user privileges. For more detailed information, see application(5) and tcpserver(7).
The proxy uses common Kernun mechanism for network
input/output operations. Configuration allows for specifying
several parameters like buffer sizes and timeouts, for
client and server connections and multimedia data channels.
They can be included in
client-ctrl
, server-ctrl
and data-channel
configuration sections, respectively.
For more detailed information, see netio(7).
The proxy uses common Kernun mechanism for name resolving (see resolving(7)).
The proxy uses common Kernun mechanism for logging (see logging(7)). When a connection comes to the proxy, the SESSION-START (MMCP-808-I) and the ACL (MMCP-810-I) messages are logged. After successfull decision about the server being connected, the SESSION-INIT (MMCC-808-I) message is logged. After closing the session, the SESSION-END (MMCP-809-I) message is logged.
The proxy uses common Kernun mechanism for traffic shaping. For more detailed information, see traffic-shaping(7).
The program options are as follows:
-h
Print usage information and exit.
-v
Display version information and exit.
-d dbglev
Set debug level to a specific number. Permitted values are 3 through to 9, 3 being the least and 9 the most verbose. See logging(7) for details. This setting is relevant only till configuration reading is finished.
-f cfgfile
Read cfgfile
for configuration information.
Kernun H.323 Proxy supports two modes how clients can use gatekeepers. In both cases, the gk-proxy(8) must be run and two special configuration items must be set:
map-file
Specifies the name of the file, where gk-proxy stores information about registered clients.
client-block
Specifies what address and port block is to be used for incoming connections. The proxy must listen on the port specified and all other ports from consequent block of given size are redirected by the proxy by means of NAT.
In this case, clients use a gatekeeper without authentication
and the gk-proxy can modify content of RAS packets
so that instead of clients' private addresses only firewall's public
address appears on the net.
The gk-proxy uses for each client separate
port from the dedicated block and the h323-proxy must
manage NAT rules for these ports. This is the meaning of
the client-block
configuration item.
Address must be set
identically in both proxies and size defined for
h323-proxy must be at least as large
as gk-proxy connection table size.
Additionally, the h323-proxy
must listen also on one special port, to which
gk-proxy redirects sessions requested by local
clients and destined to outside world.
Example:
gk-proxy open-gk { listen-on { transparent fw-int : 1719; } udpserver { max-sessions 10; } map-file "/tmp/ras.yp"; session-acl open-gk { to transparent open-gk.abc.com; register fw-ext : 40000; h323-address loopback : 3420; } } h323-proxy mm-proxy { listen-on { non-transparent loopback : 3420; non-transparent fw-ext : 40000; } map-file "/tmp/ras.yp"; client-block fw-ext : 40000 10; session-acl outgoing { from [192.168.0.0/16]; to transparent *; } session-acl gk-served { to non-transparent *; source-address client; } }
When clients use a gatekeeper with authentication
the gk-proxy cannot modify content
of RAS packets because authentication would fail.
That's why it uses client mode
of registration (unfortunately, private addresses occur on the net).
In this case, an H.323 connection is always initiated by local client,
so only the h323-proxy special port is needed,
to which the gk-proxy
redirects (by means of NAT) all connections.
That's the reason for apparent discrepancy between
listen-on
(non-transparent)
and session-acl
(transparent) directives.
Example:
gk-proxy auth-gk { listen-on { transparent fw-int : 1719; } udpserver { max-sessions 10; } map-file "/tmp/ras.yp"; session-acl auth-gk { to transparent auth-gk.abc.com; register client; h323-address loopback : 3420; } } h323-proxy mm-proxy { listen-on { non-transparent loopback : 3420; } session-acl outgoing { from [192.168.0.0/16]; to transparent *; } }
h323-proxy.cfg(5), gk-proxy.cfg(5), listen-on(5), application(5), test-expr(5), MMCP-808(6), MMCP-810(6), MMCC-808(6), MMCP-809(6), access-control(7), configuration(7), host-matching(7), logging(7), netio(7), resolving(7), tcpserver(7), time-matching(7), traffic-shaping(7), transparency(7), gk-proxy(8)