16. Networking Utilities
本章包含了一些在网络需要调查时可以派上用场的工具。
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/basicnetworkingutilities
16.1 Avahi-0.8
简介Avahi
Avahi包是一个促进本地网络服务发现的系统。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://github.com/lathiat/avahi/releases/download/v0.8/avahi-0.8.tar.gz
-
下载 MD5 校验和: 229c6aa30674fc43c202b22c5f8c2be7
-
下载大小: 1.5 MB
-
预计所需磁盘空间: 32 MB
-
预计构建时间: 0.3 SBU
额外下载
Avahi 依赖
必要
推荐
gobject-introspection-1.74.0, GTK+-2.24.33, GTK+-3.24.36, libdaemon-0.14, libglade-2.6.4, 和 Qt-5.15.8
可选
D-Bus Python-1.3.2, libevent-2.1.12, PyGTK-2.24.0, Doxygen-1.9.6 和 xmltoman (用于生成文档)
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/avahi
安装Avahi
应该有一个专用的用户和组来控制启动后的avahi-daemon守护进程。以root用户发出以下命令:
groupadd -fg 84 avahi &&
useradd -c "Avahi Daemon Owner" -d /run/avahi-daemon -u 84 \
-g avahi -s /bin/false avahi
还应该为Avahi客户端设置一个专用的特权访问组。以root用户发出以下命令:
groupadd -fg 86 netdev
修复了在使用IPv6和系统上存在多个网络适配器时导致竞争条件的回归:
patch -Np1 -i ../avahi-0.8-ipv6_race_condition_fix-1.patch
修复了avahi-daemon中的一个安全漏洞:
sed -i '426a if (events & AVAHI_WATCH_HUP) { \
client_free(c); \
return; \
}' avahi-daemon/simple-protocol.c
运行以下命令安装Avahi:
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--disable-static \
--disable-libevent \
--disable-mono \
--disable-monodoc \
--disable-python \
--disable-qt3 \
--disable-qt4 \
--enable-core-docs \
--with-distro=none \
--with-dbus-system-address='unix:path=/run/dbus/system_bus_socket' &&
make
这个包没有附带测试套件。
现在,作为root用户:
make install
命令解释
--disable-static: 此开关防止安装库的静态版本。
--disable-libevent: 该参数禁止使用libevent-2.1.12。如果已安装,请将其删除。
--disable-mono: 该参数禁用Mono绑定。
--disable-monodoc: 此参数禁用Mono绑定的文档。
--disable-python: 该参数禁用依赖于Python的脚本。它还允许成功完成常规安装。
--disable-qt3: 此参数禁止尝试构建包中过时的Qt3部分。
--disable-qt4: 此参数禁止尝试构建包中过时的Qt4Core部分。
--enable-core-docs: 此参数允许构建文档。
--with-distro=none: 在LFS发行版中有一个过时的引导脚本。此选项禁用它。
--with-dbus-system-address=...: 该选项防止包引用已弃用的/var/run目录。
--disable-dbus: 该参数禁止使用D-Bus。
--disable-gtk: 该参数禁止使用GTK+2。
--disable-gtk3: 该参数禁止使用GTK+3。
--disable-qt5: 该参数禁用Qt5的使用,并允许在没有Qt5的情况下进行构建。
--disable-libdaemon: 该参数禁止使用libdaemon。如果使用此选项,将不会构建avahi-daemon。
--enable-tests: 此选项支持构建测试和示例。
--enable-compat-howl: 此选项启用HOWL的兼容层。
--enable-compat-libdns_sd: 这个选项为libdns_sd启用兼容层。
配置 avahi
引导脚本
要在引导时启动avahi-daemon守护进程,以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable avahi-daemon
要在引导时启动avahi-dnsconfd守护进程,以root用户运行以下命令启用之前安装的systemd单元:
systemctl enable avahi-dnsconfd
内容
安装程序: avahi-autoipd, avahi-browse, avahi-browse-domains, avahi-daemon, avahi-discover-standalone, avahi-dnsconfd, avahi-publish, avahi-publish-address, avahi-publish-service, avahi-resolve, avahi-resolve-address, avahi-resolve-host-name, avahi-set-host-name, bshell, bssh, 和 bvnc
安装库: libavahi-client.so, libavahi-common.so, libavahi-core.so, libavahi-glib.so, libavahi-gobject.so, libavahi-libevent.so libavahi-ui-gtk3.so, libavahi-qt5, libavahi-ui.so, libdns_sd.so, 和 libhowl.so,
安装目录: /etc/avahi/services, /usr/include/{avahi-client,avahi-common, avahi-compat-howl, avahi-compat-libdns_sd, avahi-core, avahi-glib, avahi-gobject, avahi-libevent, avahi-qt5, avahi-ui}, /usr/lib/avahi, /usr/share/avahi
简短描述
avahi-autoipd 是IPv4LL网络地址配置守护进程。
avahi-browse 使用Avahi守护进程浏览mDNS/DNS-SD服务。
avahi-browse-domains 使用Avahi守护进程浏览mDNS/DNS-SD服务。
avahi-daemon 是Avahi mDNS/DNS-SD守护进程。
avahi-discover-standalone 使用Avahi守护进程浏览mDNS/DNS-SD服务。
avahi-dnsconfd 是mDNS/DNS-SD配置守护进程的单播DNS服务器。
avahi-publish 使用Avahi守护进程注册mDNS/DNS-SD服务或主机名或地址映射。
avahi-publish-address 使用Avahi守护进程注册mDNS/DNS-SD服务或主机名或地址映射。
avahi-publish-service 使用Avahi守护进程注册mDNS/DNS-SD服务或主机名或地址映射。
avahi-resolve 使用Avahi守护进程将一个或多个mDNS/DNS主机名解析为IP地址(反之亦然)。
avahi-resolve-address 使用Avahi守护进程将一个或多个mDNS/DNS主机名解析为IP地址(反之亦然)。
avahi-resolve-host-name 使用Avahi守护进程将一个或多个mDNS/DNS主机名解析为IP地址(反之亦然)。
avahi-set-host-name 修改mDNS主机名。
bssh 本地网络中SSH服务端的浏览器。
bvnc 本地网络中VNC服务端的浏览器。
16.2 BIND Utilities-9.18.12
简介BIND Utilities
BIND Utilities不是一个单独的包,它是包含在BIND-9.18.12中的客户端程序的集合。BIND包包括客户端程序nslookup、dig和host。如果安装BIND服务器,这些程序将自动安装。本节适用于那些不需要完整BIND服务器,但需要这些客户端应用程序的用户。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://ftp.isc.org/isc/bind9/9.18.12/bind-9.18.12.tar.xz
-
下载 (FTP): ftp://ftp.isc.org/isc/bind9/9.18.12/bind-9.18.12.tar.xz
-
下载 MD5 校验和: 101a5d919a8d7da1ae98f36e36d1dc9f
-
下载大小: 5.2 MB
-
预计所需磁盘空间: 107 MB
-
预计构建时间: 0.2 SBU
BIND Utilities 依赖
必要
推荐
可选
libcap-2.67 with PAM, libxml2-2.10.3, 和 sphinx-6.1.3
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/bind-utils
安装BIND Utilities
运行以下命令安装BIND Utilities:
./configure --prefix=/usr &&
make -C lib/isc &&
make -C lib/dns &&
make -C lib/ns &&
make -C lib/isccfg &&
make -C lib/bind9 &&
make -C lib/irs &&
make -C bin/dig &&
make -C doc
包的这一部分没有附带测试套件。
现在,作为root用户:
make -C lib/isc install &&
make -C lib/dns install &&
make -C lib/ns install &&
make -C lib/isccfg install &&
make -C lib/bind9 install &&
make -C lib/irs install &&
make -C bin/dig install &&
cp -v doc/man/{dig.1,host.1,nslookup.1} /usr/share/man/man1
命令解释
--disable-doh: 如果您没有安装nghttp2-1.52.0并且您不需要DNS over HTTPS支持,请使用此选项。
make -C lib/…: 这些命令构建客户端程序所需的库。
make -C bin/dig: 该命令构建客户端程序。
make -C doc: 如果安装了可选的Python模块sphinx-6.1.3,此命令将构建手册页。
使用 cp -v doc/man/{dig.1,host.1,nslookup.1} /usr/share/man/man1 安装已生成的手册页。
内容
安装程序: dig, host, 和 nslookup
安装库: None
安装目录: None
简短描述
请参阅BIND-9.18.12一节中的程序描述。
16.3 NetworkManager-1.42.0
简介NetworkManager
NetworkManager是一组协作工具,使网络变得简单直接。无论你是使用WiFi、有线、3G还是蓝牙,NetworkManager都可以让你快速地从一个网络转移到另一个网络:一旦一个网络配置好并加入了一次,它就可以被检测到,并在下一次可用时自动重新加入。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
注意
确保禁用systemd-networkd服务或将其配置为不管理您想用NetworkManager管理的接口。
包信息
-
下载 (HTTP): https://download.gnome.org/sources/NetworkManager/1.42/NetworkManager-1.42.0.tar.xz
-
下载 (FTP): ftp://ftp.acc.umu.se/pub/gnome/sources/NetworkManager/1.42/NetworkManager-1.42.0.tar.xz
-
下载 MD5 校验和: cfe8c33493d8d2a9d97415a7042a6fe2
-
下载大小: 6.4 MB
-
预计所需磁盘空间: 278 MB (有测试和文档)
-
预计构建时间: 0.8 SBU (有测试, 使用并行数=4)
NetworkManager 依赖
必要
推荐
cURL-7.88.1, DHCP-4.4.3-P1 (仅客户端), gobject-introspection-1.74.0, iptables-1.8.9, newt-0.52.23 (用于 nmtui), nss-3.88.1, Polkit-122, PyGObject-3.42.2, Systemd-252, UPower-1.90.0, Vala-0.56.4, 和 wpa_supplicant-2.10 (运行时,用D-Bus支持构建)
可选
BlueZ-5.66, D-Bus Python-1.3.2 (用于测试套件), GnuTLS-3.8.0 (如果 nss-3.88.1 未找到,则使用), GTK-Doc-1.33.2, libpsl-0.21.2, Qt-5.15.8 (用于示例), ModemManager-1.18.12, Valgrind-3.20.0, dnsmasq, firewalld, libaudit, libteam, mobile-broadband-provider-info, PPP, 和 RP-PPPoE
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/NetworkManager
内核配置
如果希望运行测试,请检查内核配置中是否至少启用了以下选项。这些选择被认为是必要的,但可能还不够。必要时重新编译内核:
[*] Networking support---> [CONFIG_NET]
Networking options--->
[*] TCP/IP networking [CONFIG_INET]
<*/M> IP: tunelling [CONFIG_NET_IPIP]
<*/M> IP: GRE demultiplexer [CONFIG_NET_IPGRE_DEMUX]
<*/M> IP: GRE tunnels over IP [CONFIG_NET_IPGRE]
<*> The IPv6 protocol ---> [CONFIG_IPV6]
<*/M> IPv6: IPv6-in-IPv4 tunnel (SIT driver) [CONFIG_IPV6_SIT]
<*/M> IPv6: GRE tunnel [CONFIG_IPV6_GRE]
[*] IPv6: Multiple Routing Tables [CONFIG_IPV6_MULTIPLE_TABLES]
[*] MPTCP: Multipath TCP [CONFIG_MPTCP]
[*] MPTCP: IPv6 support for Multipath TCP [CONFIG_MPTCP_IPV6]
<*/M> 802.1Q/802.1ad VLAN Support [CONFIG_VLAN_8021Q]
[*] QoS and/or fair queueing ---> [CONFIG_NET_SCHED]
<*/M> Stochastic Fairness Queueing (SFQ) [CONFIG_NET_SCH_SFQ]
<*/M> Token Bucket Filter (TBF) [CONFIG_NET_SCH_TBF]
<*/M> Fair Queue Controlled Delay AQM (FQ_CODEL) [CONFIG_NET_SCH_FQ_CODEL]
<*/M> Ingress/classifier-action Qdisc [CONFIG_NET_SCH_INGRESS]
Device Drivers --->
[*] Network device support ---> [CONFIG_NETDEVICES]
[*] Network core driver support [CONFIG_NET_CORE]
<*> Bonding driver support [CONFIG_BONDING]
<*> Dummy net driver support [CONFIG_DUMMY]
<*> Ethernet team driver support ---> [CONFIG_NET_TEAM]
<*> MAC-VLAN support [CONFIG_MACVLAN]
<*> MAC-VLAN based tap driver [CONFIG_MACVTAP]
<*> IP-VLAN support [CONFIG_IPVLAN]
<*> Virtual eXtensible Local Area Network (VXLAN) [CONFIG_VXLAN]
<*> Virtual ethernet pair device [CONFIG_VETH]
<*> Virtual Routing and Forwarding (Lite) [CONFIG_VRF]
安装NetworkManager
如果安装了Qt-5.15.8并且需要基于Qt的示例,则修复两个meson.build文件:
sed -e 's/-qt4/-qt5/' \
-e 's/moc_location/host_bins/' \
-i examples/C/qt/meson.build &&
sed -e 's/Qt/&5/' \
-i meson.build
修复python脚本,使其使用python 3:
grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'
运行以下命令安装NetworkManager:
mkdir build &&
cd build &&
CXXFLAGS+="-O2 -fPIC" \
meson setup \
--prefix=/usr \
--buildtype=release \
-Dlibaudit=no \
-Dlibpsl=false \
-Dnmtui=true \
-Dovs=false \
-Dppp=false \
-Dselinux=false \
-Dqt=false \
-Dsession_tracking=systemd \
-Dmodem_manager=false \
.. &&
ninja
运行测试需要具有总线地址的已激活图形会话。要测试结果,执行 ninja test.
根据启用的内核选项,一些测试可能会失败。
现在,作为root用户:
ninja install &&
mv -v /usr/share/doc/NetworkManager{,-1.42.0}
如果你没有将-Ddocs=true选项传递给meson,你可以安装预生成的手册页(作为root用户):
for file in $(echo ../man/*.[1578]); do
section=${file##*.} &&
install -vdm 755 /usr/share/man/man$section
install -vm 644 $file /usr/share/man/man$section/
done
如果你还没有使用-Ddocs=true,预生成的HTML文档也可以安装(作为root用户):
cp -Rv ../docs/{api,libnm} /usr/share/doc/NetworkManager-1.42.0
命令解释
CXXFLAGS="-O2 -fPIC": 这些编译器选项对于构建基于Qt5的示例是必需的。
--buildtype=release: 指定适合于包的稳定版本的构建类型,因为默认值可能会产生未优化的二进制文件。
-Ddocs=true: 如果安装了GTK-Doc-1.33.2,则使用此开关启用构建手册页和文档。
-Dnmtui=true: 此参数启用构建nmtui。
-Dlibpsl=false 和 -Dovs=false: 这些开关禁用相应库的构建。如果安装了所需的库,请删除。
-Dmodem_manager=false: 如果未安装ModemManager,则需要安装此开关。如果您已经构建了ModemManager和mobile-broadband-provider-info,则省略。
-Dsession_tracking=systemd: 此开关用于将systemd-logind设置为会话跟踪的默认程序。
-Dsystemdsystemunitdir=/lib/systemd/system: 该开关用于设置systemd单元的正确安装目录。
-Dppp=false: 该参数关闭NetworkManager对PPP的支持。
-Dlibaudit=no 和 -Dselinux=false: libaudit和SELinux在BLFS中不使用。
-Dqt=false: 禁用QT示例。如果您有可用的QT并希望安装示例,则省略。
配置 NetworkManager
配置文件
/etc/NetworkManager/NetworkManager.conf
配置信息
要使NetworkManager工作,必须至少存在一个最小配置文件。这样的文件没有安装make install。以root用户发出以下命令,创建一个最小的NetworkManager.conf文件:
cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
[main]
plugins=keyfile
EOF
该文件不应由系统用户直接修改。相反,应该使用/etc/NetworkManager/conf.d目录下的配置文件进行系统特定的更改。
要允许polkit管理授权,请添加以下配置文件:
cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
[main]
auth-polkit=true
EOF
要使用内置dhcp客户端以外的东西(如果只使用nmcli建议使用),使用以下配置(有效值包括dhclient或internal):
cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
[main]
dhcp=dhclient
EOF
为了防止NetworkManager更新/etc/resolv.conf文件,添加以下配置文件:
cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
[main]
dns=none
EOF
其他配置选项请参见man 5 NetworkManager.conf。
为了允许普通用户配置网络连接,您应该将他们添加到netdev组,并创建一个授予访问权限的polkit规则。以root用户执行如下命令:
groupadd -fg 86 netdev &&
/usr/sbin/usermod -a -G netdev <username>
cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
polkit.addRule(function(action, subject) {
if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
return polkit.Result.YES;
}
});
EOF
Systemd unit
要在引导时启动NetworkManager守护进程,请以root用户运行以下命令启用之前安装的systemd单元:
注意
如果使用Network Manager来管理一个接口,那么应该删除该接口以前的任何配置,并且在启动Network Manager之前关闭该接口。
systemctl enable NetworkManager
从1.11.2版本的NetworkManager开始,启用了一个名为NetworkManager-wait-online.service的系统单元,它用于阻止需要网络连接的服务启动,直到NetworkManager建立连接。要禁用此行为,以root用户运行以下命令:
systemctl disable NetworkManager-wait-online
内容
安装程序: NetworkManager, nmcli, nm-online, nmtui, 和, symlinked to nmtui: nmtui-connect, nmtui-edit, 和 nmtui-hostname
安装库: libnm.so 和 /usr/lib/NetworkManager 下的几个模块
安装目录: /etc/NetworkManager, /usr/include/libnm, /usr/lib/NetworkManager, /usr/share/doc/NetworkManager-1.42.0, /usr/share/gtk-doc/html/{libnm,NetworkManager} (if the documentation is built), 和 /var/lib/NetworkManager
简短描述
nmcli 是一个命令行工具,用于控制NetworkManager并获取其状态。
nm-online 是一个实用程序,用于确定您是否在线。
nmtui 是nmcli的一个基于ncurses的交互式用户界面。
nmtui-connect 是一个交互式的基于计数的用户界面,用于激活/取消激活连接。
nmtui-edit 是一个交互式的基于ncurses的用户界面,用于编辑连接。
nmtui-hostname 是用于编辑主机名的基于ncurses的交互式用户界面。
NetworkManager 是网络管理守护进程。
libnm.so 包含NetworkManager使用的函数。
16.4 network-manager-applet-1.30.0
简介NetworkManager Applet
NetworkManager Applet提供了一个工具和一个面板小程序,用于通过GUI配置有线和无线网络连接。它被设计用于任何使用GTK+的桌面环境,比如Xfce和LXDE。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://download.gnome.org/sources/network-manager-applet/1.30/network-manager-applet-1.30.0.tar.xz
-
下载 MD5 校验和: 1ad82752f1590dd356afda8a451910f2
-
下载大小: 1.8 MB
-
预计所需磁盘空间: 39 MB (有测试)
-
预计构建时间: 0.2 SBU (有测试)
NetworkManager Applet 依赖
必要
GTK+-3.24.36, libnma-1.10.6, 和 libsecret-0.20.5
推荐
gobject-introspection-1.74.0 和 ModemManager-1.18.12
必要 (运行时)
由于此包使用Polkit-122进行授权,因此当使用此包的功能时,应该运行一个Polkit Authentication Agent。
可选
gnome-bluetooth-42.5 和 libindicator
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/network-manager-applet
安装NetworkManager Applet
运行以下命令安装NetworkManager Applet:
mkdir build &&
cd build &&
meson --prefix=/usr \
--buildtype=release \
-Dappindicator=no \
-Dselinux=false &&
ninja
要测试结果,执行: ninja test.
现在,作为root用户:
ninja install
命令解释
-Dappindicator=no: 这个开关在network-manager-applet中禁用AppIndicator支持,因为它需要libindicator,而libindicator不在BLFS中。如果没有此选项,构建将失败。
-Dselinux=false: 此开关强制禁用SELinux支持,因为它目前不在BLFS中,如果没有它,构建将失败。
-Dwwan=false: 此开关禁用WWAN支持。如果您没有安装ModemManager-1.18.12,请使用此选项。
内容
安装程序: nm-applet 和 nm-connection-editor
安装库: None
安装目录: None
简短描述
nm-connection-editor 允许用户查看和编辑网络连接设置。
16.5 Nmap-7.93
简介Nmap
Nmap是一个用于网络探索和安全审计的实用程序。它支持ping扫描、端口扫描和TCP/IP指纹识别。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://nmap.org/dist/nmap-7.93.tar.bz2
-
下载 MD5 校验和: 9027eac4b8ca57574012cb061ba9ce4d
-
下载大小: 10 MB
-
预计所需磁盘空间: 141 MB (添加22 MB用于测试)
-
预计构建时间: 0.3 SBU (使用并行数=4; 添加0.2 SBU用于测试)
Nmap 依赖
推荐
注意
建议使用这些包,因为如果没有安装它们,构建过程将编译并链接到自己的(通常是较旧的)版本。
libpcap-1.10.3, Lua-5.4.4, PCRE-8.45, 和 liblinear-245
可选
PyGTK-2.24.0 (zenmap需要), Python-2.7.18 (ndiff需要), 和 libssh2-1.10.0
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/nmap
安装Nmap
运行以下命令安装Nmap:
./configure --prefix=/usr &&
make
要测试结果,执行: make check as the root user. Tests need a graphical session.
现在,作为root用户:
make install
内容
安装程序: ncat, ndiff, nmap, nping, uninstall_ndiff, uninstall_zenmap, zenmap, 和两个链接到 zenmap: nmapfe 和 xnmap
安装库: None
安装目录: /usr/lib/python2.7/site-packages/{radialnet,zenmapCore,zenmapGUI}, 和 /usr/share/{ncat,nmap,zenmap}
简短描述
ncat 是从命令行跨网络读取和写入数据的实用程序。
ndiff 是一个帮助比较Nmap扫描的工具。
nmap 是一个用于网络探索和安全审计的实用程序。它支持ping扫描、端口扫描和TCP/IP指纹识别。
nping 是一个用于网络数据包生成、响应分析和响应时间测量的开源工具。
uninstall_ndiff 是一个用于卸载ndiff的Python脚本。
uninstall_zenmap 是一个Python脚本,用于卸载zenmap。
zenmap 是一个基于Python的图形化nmap前端查看器。
16.6 Traceroute-2.1.2
简介Traceroute
Traceroute包包含一个程序,用于显示数据包到达指定主机所经过的网络路由。这是一个标准的网络故障排除工具。如果您发现自己无法连接到另一个系统,traceroute可以帮助查明问题所在。
注意
这个包覆盖LFS中安装在inetutils包中的traceroute版本。这个版本比标准版本更强大,允许更多的选项。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://downloads.sourceforge.net/traceroute/traceroute-2.1.2.tar.gz
-
下载 MD5 校验和: 56fdeed70d922f2545f4f9121234c313
-
下载大小: 71.4 KB
-
预计所需磁盘空间: 580 KB
-
预计构建时间: 小于 0.1 SBU
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/traceroute
安装Traceroute
运行以下命令安装Traceroute:
make
这个包没有附带测试套件。
现在,作为root用户:
make prefix=/usr install &&
ln -sv -f traceroute /usr/bin/traceroute6 &&
ln -sv -f traceroute.8 /usr/share/man/man8/traceroute6.8 &&
rm -fv /usr/share/man/man1/traceroute.1
由inetutils安装在LFS中的traceroute.1文件不再相关。这个包覆盖那个版本的traceroute,并安装man第8章中的手册页。
内容
安装程序: traceroute 和 traceroute6 (符号链接)
安装库: None
安装目录: None
简短描述
traceroute 它基本上是这样说的:它跟踪您的数据包从您正在处理的主机到网络上的另一台主机的路由,显示沿途所有的中间跳(网关)。
traceroute6 相当于 traceroute -6.
16.7 Whois-5.4.3
简介Whois
Whois是一个客户端应用程序,它查询Whois目录服务以获取与特定域名相关的信息。此软件包默认安装两个程序:whois和mkpasswd。mkpasswd命令也是通过LFS中的expect包安装的。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://github.com/rfc1036/whois/archive/v5.4.3/whois-5.4.3.tar.gz
-
下载 MD5 校验和: 381dce8db7c6e38ef013b5d6527f494c
-
下载大小: 100 KB
-
预计所需磁盘空间: 1.2 MB
-
预计构建时间: 小于 0.1 SBU
Whois 依赖
可选
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/whois
安装Whois
使用以下命令构建应用程序:
make
您可以独立安装whois程序、mkpasswd程序和区域设置文件。以root用户的身份发出以下命令,控制你选择安装什么:
注意
安装这个版本的mkpasswd将覆盖在LFS中安装的相同命令。
make prefix=/usr install-whois
make prefix=/usr install-mkpasswd
make prefix=/usr install-pos
内容
安装程序: whois 和 mkpasswd
安装库: None
安装目录: None
简短描述
whois 是一个客户端应用程序,它查询whois目录服务以获取与特定域名相关的信息。
mkpasswd 生成新密码,并可选择将其应用于用户。
16.8 Wireshark-4.0.3
简介Wireshark
Wireshark包包含一个网络协议分析器,也称为“嗅探器”。这对于分析从实时网络连接“离线”捕获的数据或从捕获文件读取的数据非常有用。
Wireshark提供了图形和tty模式的前端,用于检查从500多个协议捕获的网络数据包,以及从许多其他流行的网络分析器读取捕获文件的能力。
已知此包可以使用LFS 11.3平台进行构建并正常工作。
包信息
-
下载 (HTTP): https://www.wireshark.org/download/src/all-versions/wireshark-4.0.3.tar.xz
-
下载 MD5 校验和: 11a7302d65b1ff26f92148f3014eaf5b
-
下载大小: 39 MB
-
预计所需磁盘空间: 680 MB (使用BLFS书中提供的所有可选依赖项)
-
预计构建时间: 1.9 SBU (使用并行数=4和所有可选的依赖关系在BLFS书中可用)
额外下载
- 额外文档: https://www.wireshark.org/download/docs/ (包含以各种格式指向几个不同文档的链接)
Wireshark 依赖
必要
CMake-3.25.2, GLib-2.74.5, libgcrypt-1.10.1, 和 Qt-5.15.8
推荐
libpcap-1.10.3 (需要捕获数据)
可选
asciidoctor-2.0.18, Brotli-1.0.9, c-ares-1.19.0, Doxygen-1.9.6, git-2.39.2, GnuTLS-3.8.0, libnl-3.7.0, libxslt-1.1.37, libxml2-2.10.3, Lua-5.2.4, MIT Kerberos V5-1.20.1, nghttp2-1.52.0, SBC-2.0, Speex-1.2.1, BCG729, libilbc, libsmi, lz4, libssh, MaxMindDB, Minizip, Snappy, 和 Spandsp
用户笔记: https://wiki.linuxfromscratch.org/blfs/wiki/wireshark
内核配置
内核必须启用Packet协议,Wireshark才能从网络中捕获实时数据包:
[*] Networking support ---> [CONFIG_NET]
Networking options --->
<*/M> Packet socket [CONFIG_PACKET]
如果作为模块构建,则名称为 af_packet.ko.
安装Wireshark
Wireshark是一个非常庞大和复杂的应用程序。这些说明提供了额外的安全措施,以确保只允许受信任的用户查看网络流量。首先,为wireshark创建一个系统组。作为root用户:
groupadd -g 62 wireshark
继续执行以下命令安装Wireshark:
mkdir build &&
cd build &&
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_DOCDIR=/usr/share/doc/wireshark-4.0.3 \
-G Ninja \
.. &&
ninja
这个包没有附带测试套件。
现在,作为root用户:
ninja install &&
install -v -m755 -d /usr/share/doc/wireshark-4.0.3 &&
install -v -m644 ../README.linux ../doc/README.* ../doc/randpkt.txt \
/usr/share/doc/wireshark-4.0.3 &&
pushd /usr/share/doc/wireshark-4.0.3 &&
for FILENAME in ../../wireshark/*.html; do
ln -s -v -f $FILENAME .
done &&
popd
unset FILENAME
如果您从“额外下载”中列出的页面下载了任何文档文件,请以root用户发出以下命令来安装它们:
install -v -m644 <Downloaded_Files> \
/usr/share/doc/wireshark-4.0.3
现在,将敏感应用程序的所有权和权限设置为只允许授权用户。作为root用户:
chown -v root:wireshark /usr/bin/{tshark,dumpcap} &&
chmod -v 6550 /usr/bin/{tshark,dumpcap}
最后,添加任何用户到wireshark组(作为root用户):
usermod -a -G wireshark <username>
如果您是第一次安装wireshark,您需要注销会话并重新登录。这样可以将wireshark放入您的组中,否则wireshark将无法正常工作。
配置 Wireshark
配置文件
/etc/wireshark.conf 和 ~/.config/wireshark/* (除非系统中已经存在~/.wireshark/*)
配置信息
虽然默认配置参数很简单,但请参考Wireshark User’s Guide中的配置章节进行配置。Wireshark的大部分配置都可以通过 Wireshark 图形界面的菜单选项来完成。
注意
如果您想查看数据包,请确保您没有使用iptables-1.8.9过滤它们。如果您想要排除某些类别的数据包,使用iptables比使用Wireshark更有效。
内容
安装程序: capinfos, captype, dumpcap, editcap, idl2wrs, mergecap, randpkt, rawshark, reordercap, sharkd, text2pcap, tshark, 和 wireshark
安装库: libwireshark.so, libwiretap.so, libwsutil.so, 以及/usr/lib/wireshark/plugins下的众多模块
安装目录: /usr/{include,lib,share}/wireshark 和 /usr/share/doc/wireshark-4.0.3
简短描述
capinfos 读取已保存的捕获文件,并返回有关该文件的部分或全部统计信息。它能够检测和读取Wireshark包支持的任何捕获。
captype 打印捕获文件的文件类型。
dumpcap 是一个网络流量转储工具。它允许您从活动网络捕获数据包数据,并将数据包写入文件。
editcap 编辑和/或翻译捕获文件的格式。它知道如何读取libpcap捕获文件,包括tcpdump、Wireshark和其他以该格式写入捕获的工具的捕获文件。
idl2wrs 是一个程序,它接受用户指定的CORBA IDL文件,并为Wireshark“插件”生成“C”源代码。它依赖于两个Python程序wireshark_be.py和wireshark_gen.py,这两个程序默认情况下没有安装。它们必须手动从tools目录复制到$PYTHONPATH/site-packages/目录。
mergecap 将多个保存的捕获文件合并为单个输出文件。
randpkt 创建随机包捕获文件。
rawshark 转储和分析原始libpcap数据。
reordercap 将输入文件帧的时间戳重新排序到输出文件中。
sharkd 是一个监听UNIX套接字的守护进程。
text2pcap 读入ASCII十六进制转储,并将所描述的数据写入libpcap风格的捕获文件。
tshark 是一个tty模式的网络协议分析器。它允许您从活动网络中捕获数据包数据,或者从先前保存的捕获文件中读取数据包。
wireshark 是Qt GUI网络协议分析器。它允许您交互式地浏览来自实时网络或先前保存的捕获文件的数据包数据。
libwireshark.so 包含Wireshark程序的过滤和抓包功能。
libwiretap.so 是一个正在开发的库,作为libpcap的未来替代品,libpcap是当前用于数据包捕获的标准Unix库。有关更多信息,请参阅源代码wiretap目录中的README文件。