TranslateProject/translated/tech/20160621 Basic Linux Networking Commands You Should Know.md

141 lines
8.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

你必须了解的 Linux 基础网络命令
==================================================
![](https://itsfoss.com/wp-content/uploads/2016/06/Basic-Networking-Commands-Linux.jpg)
摘要:有抱负的 Linux 系统管理员和 Linux 狂热者必须知道的最重要而且基础的 Linux 网络命令合集。
在 Its FOSS 我们并非每天都谈论 Linux 的“命令行方面”。基本上,我更专注于 Linux 的桌面端。但你们读者中的一些人在内部调查(仅面向 It's FOSS newsletter 订阅者)中指出,你们也想学些命令行技巧。速查表也受大部分读者所喜欢和支持。
为此,我编辑了一个 Linux 中基础网络命令的列表。它并不是一个教你如何使用这些命令的教程,而是一个命令合集和他们的简短解释。所以,如果你已经使用过这些命令,你可以用它来快速记住命令。
你可以把这个网页添加为书签以便快速查阅,或下载这些命令的 PDF 版本以便离线使用。
当我还是通信系统工程专业的学生的时候我就有这个 Linux 网络命令的列表了。它帮助我在计算机网络课程获得了高分。希望它也能以同样的方式帮助你。
> 独家内容:[下载 Linux 网络命令速查表][1] 以便将来查阅。你可以打印或保存它以便离线查看。
### Linux 基础网络命令列表
我在计算机网络课程上使用 FreeBSD不过这些 UNIX 命令应该也能在 Linux 上同样工作。
#### 连通性
- __ping <host\>__发送 ICMP echo 消息一个包到主机这可能会不停地发送直到你按下 Control-CPing 通意味着一个包从你的机器通过 ICMP 发送出去并在 IP 层回显Ping 告诉你另一个主机是否在运行
- __telnet <host\> [port]__与主机在指定的端口通信默认的 telnet 端口是 23其它一些常用的端口是
7 —— echo 端口
25 —— SMTP用于发送邮件
79 —— Finger译注[维基百科 - Finger protocal](https://en.wikipedia.org/wiki/Finger_protocol)提供该网络下其它用户的信息
Control-] 以退出 telnet
#### ARP
ARP 用于将 IP 地址转换为以太网地址Root 用户可以添加和删除 ARP 记录 ARP 记录被污染或者错误时删除他们会有用Root 显式添加的 ARP 记录是永久的 —— 代理设置的也是ARP 表保存在内核中动态地被操作ARP 记录会被缓存通常在 20 分钟后失效并被删除
- __arp -a__打印 ARP
- __arp -s <ip_address\> <mac_address\> [pub]__添加一条记录到表中
- __arp -a -d__删除 ARP 表中的所有记录
#### 路由
- __netstat -r__打印路由表路由表保存在内核中用于 IP 层路由包到非本地网络
- __route add__route 命令用于向路由表添加静态手动输入而非动态路由路径所有从该 PC 到那个 IP/子网的流量都会经由指定的网关 IP它也可以用来设置一个默认路由例如 IP/子网处使用 0.0.0.0就可以发送所有包到特定的网关
- __routed__控制动态路由的 BSD 守护程序开机时启动它运行 RIP 路由协议只有 root 用户可用没有 root 权限你不能运行它
- __gated__gated 是另一个使用 RIP 的路由守护进程它同时支持 OSPFEGP RIP 协议只有 root 用户可用
- __traceroute__用于跟踪 IP 包的路由它每次发送包时都把跳数加 1从而使得从源地址到目的地之间的所有网关都会返回消息
- __netstat -rnf inet__显示 IPv4 的路由表
- __sysctl net.inet.ip.forwarding=1__启用包转发把主机变为路由器
- __route add|delete [-net|-host] <destination\> <gateway\>__ `route add 192.168.20.0/24 192.168.30.4`添加一条路由
- __route flush__删除所有路由
- __route add -net 0.0.0.0 192.168.10.2__添加一条默认路由
- __routed -Pripv2 -Pno_rdisc -d [-s|-q]__运行 routed 守护进程使用 RIPv2 协议不启用 ICMP 自动发现在前台运行供给模式或安静模式
- __route add 224.0.0.0/4 127.0.0.1__定义 RIPv2 使用的路由译注翻译存疑
- __rtquery -n <host\>__译注增加了 host 参数查询指定主机上的 RIP 守护进程手动更新路由表
#### 其它
- __nslookup__ DNS 服务器查询 IP 转为名称或反之例如`nslookup facebook.com` 会给出 facebook.com IP
- __ftp <host\> [port]__译注原文中 water 应是笔误传输文件到指定主机通常可以使用 login="anonymous" , p/w="guest" 登录
- __rlogin -l <host\>__译注添加了 host 参数使用类似 telnet 的虚拟终端登录到主机
#### 重要文件
- __/etc/hosts__域名到 IP 地址的映射
- __/etc/networks__网络名称到 IP 地址的映射
- __/etc/protocols__协议名称到协议编号的映射
- __/etc/services__TCP/UDP 服务名称到端口号的映射
#### 工具和网络性能分析
- __ifconfig <interface\> <address\> [up]__启动接口
- __ifconfig <interface\> [down|delete]__停止接口
- __ethereal &__在后台打开 `ethereal` 而非前台
- __tcpdump -i -vvv__抓取和分析包的工具
- __netstat -w [seconds] -I [interface]__显示网络设置和统计信息
- __udpmt -p [port] -s [bytes] target_host__发送 UDP 流量
- __udptarget -p [port]__接收 UDP 流量
- __tcpmt -p [port] -s [bytes] target_host__发送 TCP 流量
- __tcptarget -p [port]__接收 TCP 流量
#### 交换机
- __ifconfig sl0 srcIP dstIP__配置一个序列接口在此前先执行 `slattach -l /dev/ttyd0`此后执行 `sysctl net.inet.ip.forwarding=1`
- __telnet 192.168.0.254__从子网中的一台主机访问交换机
- __sh ru__ __show running-configuration__查看当前配置
- __configure terminal__进入配置模式
- __exit__进入低级配置模式译注翻译存疑
#### VLAN
- __vlan n__创建一个 ID n VLAN
- __no vlan N__删除 ID n VLAN
- __untagged Y__添加端口 Y VLAN n
- __ifconfig vlan0 create__创建 vlan0 接口
- __ifconfig vlan0 vlan ID vlandev em0__连接 vlan0 接口到 em0 之上译注翻译存疑并设置标记为 ID
- __ifconfig vlan0 [up]__启用虚拟接口
- __tagged Y__为当前 VLAN 的端口 Y 添加标记帧支持
#### UDP/TCP
- __socklab udp__使用 UDP 协议运行 `socklab`
- __sock__创建一个 UDP 套接字等效于输入 `sock udp` `bind`
- __sendto <Socket ID\> <hostname\> <port #\>__发送数据包
- __recvfrom <Socket ID\> <byte #\>__从套接字接收数据
- __socklab tcp__使用 TCP 协议运行 `socklab`
- __passive__创建一个被动模式的套接字等效于 `socklab``sock tcp``bind``listen`
- __accept__接受进来的连接可以在发起进来的连接之前或之后执行
- __connect <hostname\> <port #\>__等效于 `socklab``sock tcp``bind``connect`
- __close__关闭连接
- __read <byte #\>__从套接字中读取 n 字节
- __write__例如`write ciao`、`write #10`向套接字写入 "ciao" 10 个字节
#### NAT/防火墙
- __rm /etc/resolv.conf__禁止地址解析保证你的过滤和防火墙规则正确工作
- __ipnat -f file_name__将过滤规则写入文件
- __ipnat -l__显示活动的规则列表
- __ipnat -C -F__重新初始化规则表
- __map em0 192.168.1.0/24 -> 195.221.227.57/32 em0__将 IP 地址映射到接口
- __map em0 192.168.1.0/24 -> 195.221.227.57/32 portmap tcp/udp 20000:50000__带端口号的映射
- __ipf -f file_name__将过滤规则写入文件
- __ipf -F -a__重置规则表
- __ipfstat -I__在过滤的包上允许访问某些信息译注翻译存疑也包括活动的过滤规则
希望这份基础的 Linux 网络命令合集对你有用。问题和建议总是受欢迎的。
--------------------------------------------------------------------------------
via: https://itsfoss.com/basic-linux-networking-commands
作者:[Abhishek Prakash][a]
译者:[bianjp](https://github.com/bianjp)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/abhishek/
[1]: https://drive.google.com/open?id=0By49_3Av9sT1cDdaZnh4cHB4aEk