TCPDCHK(8)
π TCPDCHK π
okay so bestie, this is tcpdchk β it lives in section 8 of the System Manager's Manual π«Ά
β¨ NAME β¨
tcpdchk β the tcp wrapper configuration checker, aka your config's personal hype-accountability bestie π
π SYNOPSIS π
tcpdchk [-a] [-d] [-i inet_conf] [-v]
π¦ DESCRIPTION π¦
ngl, tcpdchk is the friend who reads your whole text thread before you send it and goes "girl, that's not what you think it says." It examines your tcp wrapper configuration and reports all potential and real problems it can find. No cap, all of them. π
So here's the vibe: it looks at the tcpd access control files β by default those are /etc/hosts.allow and /etc/hosts.deny β and it compares the entries in those files against the entries in the inetd network configuration file. Like a side-by-side vibe check for your whole setup. β¨
And the problems it reports? It's giving full forensic investigator, fr fr. Watch this list:
- non-existent pathnames
- services that appear in tcpd access control rules, but are not controlled by
tcpd - services that should not be wrapped
- non-existent host names or non-internet address forms
- occurrences of host aliases instead of official host names
- hosts with a name/address conflict
- inappropriate use of wildcard patterns
- inappropriate use of NIS netgroups or references to non-existent NIS netgroups
- references to non-existent options
- invalid arguments to options
- and so on π
And where possible, tcpdchk provides a helpful suggestion to fix the problem. not just "you're wrong π
" β it actually tells you how to fix it. iconic behavior. π
πΈ OPTIONS πΈ
-aβ Report access control rules that permit access without an explicitALLOWkeyword. like, sneaky permissions that never said the quiet part out loud. it will call them out π«Ά-dβ Examinehosts.allowandhosts.denyfiles in the current directory instead of the default ones. perfect for testing your little edits before you commit to the real thing β¨-iinet_confβ Specify this option whentcpdchkis unable to find yourinetd.confnetwork configuration file, or when you suspect that the program uses the wrong one. basically: "bestie, the file is here." π-vβ Display the contents of each access control rule. Daemon lists, client lists, shell commands and options are shown in a pretty-printed format; this makes it easier for you to spot any discrepancies between what you want and what the program understands. the way that this one shows you what the program thinks you said vs what you actually meant?? unmatched. it's the translation layer you didn't know you needed π
π FILES π
The default locations of the tcpd access control tables are:
/etc/hosts.allow
/etc/hosts.deny
those two little files hold so much power, it's giving main character energy honestly π
π SEE ALSO π
tcpdmatch(8), explain whattcpdwould do in specific cases.hosts_access(5), format of the tcpd access control tables.hosts_options(5), format of the language extensions.inetd.conf(5), format of theinetdcontrol file.
the whole little squad, all linked up π«Ά go read them, iykyk
π AUTHORS π
Wietse Venema (wietse@wzv.win.tue.nl), Department of Mathematics and Computing Science, Eindhoven University of Technology Den Dolech 2, P.O. Box 513, 5600 MB Eindhoven, The Netherlands
shoutout to Wietse for writing this whole thing, absolute legend behavior π§ no notes.
okay that's the whole page!! π it's from the System Manager's Manual, section 8, and the page signs off as TCPDCHK(8) β go run it on your config, bestie, your hosts.allow deserves the truth πΈβ¨π
π¦ where this page comes from
- debian bookworm: tcpd 7.6.q-32
- debian trixie: tcpd 7.6.q-36
- nixos 26.05: tcp-wrappers 7.6.q-36
- nixpkgs unstable: tcp-wrappers 7.6.q-36
- ubuntu jammy: tcpd 7.6.q-31build2
- ubuntu noble: tcpd 7.6.q-33
- ubuntu questing: tcpd 7.6.q-36build1
- ubuntu resolute: tcpd 7.6.q-36build2
- ubuntu stonking: tcpd 7.6.q-37
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms