linux 网 络 相 关 入 门 介 绍 贾 明 皓 jiajerry@mail.ustc.edu.cn
介 绍 日 常 学 习 生 活 下 的 所 用 到 的 一 些 和 网 络 相 关 的 命 令, 并 结 合 个 人 的 使 用 做 软 件 一 些 推 荐 网 络 的 基 本 概 念 网 络 的 查 看 配 置 网 络 共 享 一 些 网 络 应 用
tcp/ip 体 系 结 构 : 一 些 基 本 概 念
IP 地 址 : 是 IP 协 议 提 供 的 一 种 统 一 的 地 址 格 式, 它 为 互 联 网 上 的 每 一 个 网 络 和 每 一 台 主 机 分 配 一 个 逻 辑 地 址, 以 此 来 屏 蔽 物 理 地 址 的 差 异 4 个 8 位 二 进 制 数 组 成, 常 用 点 分 十 进 制 表 示 : 218.104.71.168 IP 地 址 =< 网 络 号 >.< 主 机 号 > 根 据 第 一 字 节 分 A,B,C,D,E 类 网 址 0,10,110,1110,1111 A,B,C 分 别 是 前 8,16,24 位 作 网 络 号 前 三 个 为 基 本 类
私 有 地 址 ( Private address ) 属 于 非 注 册 地 址, 专 门 为 组 织 机 构 内 部 使 用 以 下 列 出 留 用 的 内 部 私 有 地 址 A 类 10.0.0.0 10.255.255.255 B 类 172.16.0.0 172.31.255.255 C 类 192.168.0.0 192.168.255.255
子 网 掩 码 subnet mask : 又 叫 网 络 掩 码 地 址 掩 码 子 网 络 遮 罩, 它 是 一 种 用 来 指 明 一 个 IP 地 址 的 哪 些 位 标 识 的 是 主 机 所 在 的 子 网 以 及 哪 些 位 标 识 的 是 主 机 的 位 掩 码 子 网 掩 码 不 能 单 独 存 在, 它 必 须 结 合 IP 地 址 一 起 使 用 子 网 掩 码 只 有 一 个 作 用, 就 是 将 某 个 IP 地 址 划 分 成 网 络 地 址 和 主 机 地 址 两 部 分
网 关 (Gateway) : 又 称 网 间 连 接 器 协 议 转 换 器 网 关 在 网 络 层 以 上 实 现 网 络 互 连, 是 最 复 杂 的 网 络 互 连 设 备, 仅 用 于 两 个 高 层 协 议 不 同 的 网 络 互 连 网 关 既 可 以 用 于 广 域 网 互 连, 也 可 以 用 于 局 域 网 互 连 网 关 是 一 种 充 当 转 换 重 任 的 计 算 机 系 统 或 设 备 在 使 用 不 同 的 通 信 协 议 数 据 格 式 或 语 言, 甚 至 体 系 结 构 完 全 不 同 的 两 种 系 统 之 间, 网 关 是 一 个 翻 译 器 本 机 的 流 量 要 经 由 网 关 交 付 出 去, 网 关 有 点 类 似 宿 管 由 于 历 史 的 原 因, 许 多 有 关 TCP/IP 的 文 献 曾 经 把 网 络 层 使 用 的 路 由 器 称 为 网 关, 在 今 天 很 多 局 域 网 采 用 都 是 路 由 来 接 入 网 络, 因 此 通 常 指 的 网 关 就 是 路 由 器 的 IP!
路 由 route : 网 络 层 的 数 据 包 转 发 设 备 路 由 器 通 过 转 发 数 据 包 来 实 现 网 络 互 连 因 特 网 的 核 心 部 分 是 由 许 多 网 络 和 把 它 们 互 连 起 来 的 路 由 器 组 成, 而 主 机 处 在 因 特 网 的 边 缘 部 分 目 标 网 址, 网 关, 掩 码
地 址 解 析 协 议, 即 ARP ( Address Resolution Protocol ), 是 根 据 IP 地 址 获 取 物 理 地 址 的 一 个 TCP/IP 协 议 其 功 能 是 : 主 机 将 ARP 请 求 广 播 到 网 络 上 的 所 有 主 机, 并 接 收 返 回 消 息, 确 定 目 标 IP 地 址 的 物 理 地 址, 同 时 将 IP 地 址 和 硬 件 地 址 存 入 本 机 ARP 缓 存 中, 下 次 请 求 时 直 接 查 询 ARP 缓 存 ICMP 是 ( Internet Control Message Protocol ) Internet 控 制 报 文 协 议 它 是 TCP/IP 协 议 族 的 一 个 子 协 议, 用 于 在 IP 主 机 路 由 器 之 间 传 递 控 制 消 息 控 制 消 息 是 指 网 络 通 不 通 主 机 是 否 可 达 路 由 是 否 可 用 等 网 络 本 身 的 消 息 这 些 控 制 消 息 虽 然 并 不 传 输 用 户 数 据, 但 是 对 于 用 户 数 据 的 传 递 起 着 重 要 的 作 用
dhcp : 动 态 主 机 配 置 协 议 ( Dynamic Host Configuration Protocol, DHCP ) 是 一 个 局 域 网 的 网 络 协 议, 使 用 UDP 协 议 工 作, 主 要 有 两 个 用 途 : 给 内 部 网 络 或 网 络 服 务 供 应 商 自 动 分 配 IP 地 址, 给 用 户 或 者 内 部 网 络 管 理 员 作 为 对 所 有 计 算 机 作 中 央 管 理 的 手 段 dns : 域 名 系 统, 可 以 将 域 名 和 IP 地 址 相 互 映 射 的 一 个 分 布 式 数 据 库, 能 够 使 人 更 方 便 的 访 问 互 联 网, 而 不 用 去 记 住 能 够 被 机 器 直 接 读 取 的 IP
那 么 多 概 念, 只 要 大 家 了 解 一 个 大 致 的 网 络 过 程 一 台 电 脑 要 上 网, 首 先 要 在 当 前 最 小 的 网 络 环 境 获 得 一 个 可 以 用 来 网 络 通 信 的 ip 地 址, 指 派 给 你 ip 的 网 关 要 有 在 internet 上 的 ip, 同 时 要 有 域 名 解 析 服 务 数 据 流 量 从 本 机 发 出, 交 付 给 路 由, 路 由 查 找 路 由 表, 将 其 转 发 出 去 而 互 联 网 上 的 设 备, 则 经 路 由 将 数 据 发 送 到 本 机
日 常 的 linux 生 活 中, 我 们 可 能 都 安 装 了 桌 面, 桌 面 组 建 往 往 提 供 了 联 网 功 能, 如 networkmanager, wicd, e17 的 connman 等, 但 是 掌 握 基 本 的 网 络 相 关 命 令 是 必 要 且 有 趣 的, 有 时 候 会 更 加 方 便 使 用 linux 一 些 命 令 的 研 究 我 们 不 妨 可 以 从 这 些 集 成 的 前 端 入 手 看 看 它 到 底 调 用 了 些 什 么 e.g. 在 Arch 下 使 用 wifi menu 连 接 无 线 网 络 后, 用 ps auxf grep wl 查 看
ip 在 iproute2 包 中 是 一 个 很 基 本 而 且 涉 及 面 很 广 的 命 令 查 看 各 网 络 信 息 ip link, ip addr, ip route 打 开 关 闭 网 络 装 置 ip link [ s] set <dev> up/down 修 改 网 络 装 置 名 称 ip link set <dev> name <name> 修 改 网 络 装 置 mac ip link set address :::: 设 定 网 络 地 址 ip addr add 192.168.12.39/24 dev <dev> broadcast + label <label> 网 络 路 由 设 定 ip route add 192.168.12.0/24 dev <dev> via 192.168.1.1 http://blog.csdn.net/radkitty/article/details/3022181
route 路 由 设 定 route add net <ip> netmask <netmask> dev <devs> 添 加 一 个 本 地 路 由 route add default gw 192.168.0.1 route n 查 看 路 由 状 态 ( 直 接 使 用 ip 或 port num) flags U 路 由 是 启 动 的 H 目 标 是 一 个 主 机 U 需 要 网 关 转 送 R 启 用 动 态 路 由 时 恢 复 路 由 资 讯 D 已 经 由 服 务 或 转 port 功 能 设 定 为 动 态 路 由 M 路 由 已 经 被 修 改 了! 路 由 不 被 接 受
ifconfig net tools 涉 及 网 络 设 备 管 理, 与 ip 的 部 分 命 令 有 重 叠 ifconfig 仅 能 查 看 到 当 前 活 动 的 网 卡 ifconfig <dev> (ip address) broadcast (broadcast) netmask (netmask) ifconfig <dev> up/down ifconfig eth0 hw ether ::::
iw iwconfig 无 线 网 络 设 备 的 设 定 不 过 有 关 无 线 联 网 更 推 荐 wpa_supplicant iwconfig wl essid ustcnet mode managed key off iwlist 显 示 无 线 网 络 状 态 iwlist <dev> scan iwlist scan grep i ssid ( 找 出 当 前 可 用 无 线 )
对 于 wpa 加 密 的 无 线 网 络 我 们 需 要 wpa_supplicant wpa_passphrase 这 个 可 以 帮 助 生 成 最 基 本 的 配 置 文 件 /etc/wpa_supplicant 下 有 例 子 man 5 wpa_supplicant.conf 有 说 明 + 样 板 也 可 以 用 来 连 接 wep 加 密 的 网 络, 但 是 那 个 时 候 用 iwconfig 更 简 单 : )
贴 出 我 连 接 寝 室 分 的 无 线 网 用 的 配 置 ctrl_interface=dir=/var/run/wpa_supplicant // 进 程 文 件 GROUP=wheel // 指 定 用 户 组 network={ ssid="kancolle" // 名 称 scan_ssid=1 // 扫 描 key_mgmt=wpa PSK // 加 密 类 型 psk="shimakaze" // 密 钥 }
dhcpcd/dhclient 自 动 从 dhcp server 处 获 得 可 用 的 ip 地 址 一 般 来 说 用 这 个 设 定 ip 地 址 最 方 便 XD 而 且 对 于 一 个 固 定 网 络 环 境 下 的 固 定 设 备, 其 实 用 dhcpcd 获 得 的 地 址 往 往 是 一 样 的 0.0 只 分 配 ipv4 : dhcpcd 4 <dev> dhcp, 方 便 简 单 而 且 默 认 的 往 往 就 是 合 适 的 但 是 如 果 dhcp server 性 能 不 足, 以 及 希 望 获 得 固 定 ip, 或 者 提 高 ip 获 取 速 度, 我 们 就 需 要 static ip
static ip 用 开 始 提 到 的 那 些 命 令 是 可 以 的, 不 过 那 些 命 令 一 般 是 遇 到 网 络 问 题 或 者 有 较 多 专 业 知 识 并 且 有 其 它 配 置 目 的 使 用 的 # ip addr add 139.96.30.120/24 dev eth0 # ip link set up dev eth0 # ip route add default via 139.96.30.100 dev eth0 系 统 启 动 时 指 定 配 置 /etc 下 的 网 络 相 关 配 置 文 件 不 同 发 行 版 具 体 文 件 啊 不 一 样
配 置 文 件 /etc/resolv.conf resolvconf resolveconf.conf 指 定 使 用 的 dns nameserver 8.8.8.8 注 意 resolv.conf 是 会 被 dhcp 或 者 networkmanager 修 改 的, 如 果 要 固 定 它, 要 作 一 定 设 置 https://wiki.archlinux.org/index.php/resolv.conf#writeprotect_.2fetc.2fresolv.conf 可 以 配 置 本 地 dns 服 务, 一 来 适 当 解 决 dns 污 染 问 题, 二 来 避 免 dns 劫 持, 三 可 以 加 速 访 问
ping traceroute 和 icmp 报 文 协 议 相 关 的 两 个 基 本 命 令 可 用 来 检 查 网 络 可 用 性, 连 通 优 良 程 度, 检 查 数 据 包 经 过 的 路 由 节 点 ping/ping6 c count t timeout s packetsize
netstat nmap nslookup tcpdump wireshark nc(netcat)
网 络 共 享 iptables, 启 用 nat # iptables t nat A POSTROUTING o internet0 j MASQUERADE # iptables A FORWARD i net0 o internet0 j ACCEPT # iptables A FORWARD m conntrack ctstate RELATED,ESTABLISHED j ACCEPT sysctl net.ipv4.ip_forward=1 ( 允 许 转 发 dnsmasq, bridge, hostapd dnsmasq 提 供 dhcp 服 务 以 及 dns 缓 存 服 务 dns 缓 存 服 务 还 有 pdns 等 bridge 提 供 桥 接 网 咯 Hostapd 实 现 ap 模 式 无 线 分 网 的 重 点 ( 还 有 个 ad hoc 模 式, 不 如 ap 好 用 ) Arch 的 netctl 包 也 提 供 了 网 络 共 享 功 能 注 意 各 个 发 行 版 自 己 的 网 络 配 置
介 绍 自 己 常 用 的 无 线 网 络 分 享 思 路, 一 个 网 卡 A 获 得 可 以 访 问 互 联 网 的 能 力 一 个 无 线 网 卡 B 发 出 无 线 信 号 B 和 A 也 是 有 共 享 / 共 用 关 系 的 网 路 上 也 有 配 置 好 的 脚 本 create_ap 我 们 通 过 这 个 脚 本 来 实 现 并 网 络 共 享 的 过 程
虚 拟 机 下 的 天 翼 客 户 端 可 以 联 网 之 后, 在 本 机 运 行 脚 本 create_ap <wifi interface> <interface with internet> <ssid> <password> 该 脚 本 自 动 配 置 了 dnsmasq, hostapd 等 脚 本 由 Arch 社 区 成 员 提 供, 可 在 aur 获 得 现 在 于 github 维 护 https://github.com/oblique 脚 本 实 际 上 由 bash 所 写, 可 以 通 过 阅 读 该 bash 进 行 学 习
hostapd hostapd 可 以 实 现 软 ap, 网 卡 master 模 式 http://hostap.epitest.fi/hostapd/ http://wireless.kernel.org/en/users/documentatio n/hostapd 参 数 B 后 台 进 程 方 式 运 行 P 指 定 pid 文 件 路 径 d show debug info hostapd <path to config file>
/etc/hostapd/ 这 里 面 有 详 细 的 配 置 说 明 与 例 子 主 要 需 要 指 定 设 备, 驱 动, ssid, password, hw_mode,channel, 加 密 方 式 还 可 以 启 用.accept,.deny, 根 据 mac 过 滤 连 接 注 意 hostapd 和 networkmanager 是 可 能 有 冲 突 的 http://hueidou.github.io/2012/08/16/use hostapd set up wirelessap.html
ssid=vocaloid interface=wlp9s0 driver=nl80211 hw_mode=g channel=1 ctrl_interface=/tmp/create_ap.wlp9s0.conf.k8rnis8b/hostapd_ctrl ctrl_interface_group=0 ignore_broadcast_ssid=0 wpa=3 wpa_passphrase=kagamine wpa_key_mgmt=wpa PSK wpa_pairwise=tkip rsn_pairwise=ccmp
dnsmasq dns 缓 存 和 dhcp 服 务 功 能 /etc/dnsmasq dnsmasq C <path config file> x <pid file> 作 dhcp 服 务 : interface=wlp9s0 bind interfaces dhcp range=192.168.12.1,192.168.12.254,255.255.255.0,24h dhcp option=option:router,192.168.12.1 no hosts
作 dns 缓 存 : dnsmasq 添 加 listen address=<ip> 再 针 对 dhcpcd 或 dhclient 配 置 /etc/resolv.conf.head prepend domain name servers 127.0.0.1 还 有 个 pdns 也 提 供 dns 缓 存 服 务
网 速 哪 里 去 了?! iftop 查 看, 结 合 arp 等 定 位 mac, tc+iptables 解 决 ( 这 个 我 也 在 学 习 中 ) iftop i wlp9s0 查 看 网 速 arp n i 查 看 对 应 mac arp a nmap 端 口 扫 描 或 者 对 网 段 扫 描 nmap sn 192.168.12.1/24 man nmap 会 看 到 中 文 翻 译 _(:з )_ 也 是 有 例 子 说 明 的
一 些 有 用 的 网 络 工 具 wget o 指 定 output file c 继 续 下 载, 可 以 添 加 alias wget='wget c' 到 zshrc 等 中 local encoding remote encoding 乱 码 时 候 试 试 r 递 归 下 载 m 镜 像 p 获 得 图 像 k 转 换 为 本 地 地 址 np 不 要 进 入 父 目 录 accept= 接 受 的 格 式 L 不 进 入 其 它 主 机 支 持 cookie
curl 个 人 用 的 不 多, 但 是 这 是 个 很 强 大 的 网 络 应 用 层 相 关 的 命 令, 支 持 多 种 协 议 curl I http:// H header X 指 定 命 令 只 查 看 返 回 的 头 部 欢 迎 常 用 此 命 令 的 大 神 多 多 介 绍
axel, aria2c 也 是 命 令 行 下 的 下 载 工 具, 后 者 支 持 bt 多 线 程 支 持, 调 节 简 单, 可 以 限 速
ftp 本 机 架 设 ftp, vsftp ( 方 便 局 域 网 下 文 件 共 享 客 户 端 比 起 filezilla 什 么 的, 个 人 推 荐 lftp lftp 可 以 对 目 录 进 行 操 作 lftp username@host get 下 载 到 本 地 put 上 传 到 服 务 器 R 反 向 上 传 mirror R
openssh telnet? ssh! 都 提 供 远 程 登 录 的 功 能, 但 是 telnet 安 全 性 不 如 ssh ssh Secure Shell Protocol 本 地 安 装 openssh 同 时 提 供 了 客 户 端 和 服 务 端 意 味 着 你 既 可 以 登 陆 到 别 的 主 机, 也 可 以 让 别 人 来 登 陆 ssh(client) sshd(server)
ssh 默 认 端 口 22 最 简 单 的 使 用 : ssh user@hostname ( 然 后 提 示 密 码 输 入 4 只 用 ipv4 v 详 细 输 出 调 试 信 息 ( 可 以 帮 助 我 们 了 解 ssh 过 程 ) p port 指 定 端 口 ( 当 有 其 它 端 口 开 放 时 ) D [bind_address] <local port> 绑 定 本 地 端 口 动 态 转 发 ( socks v5 协 议 代 理 ) N 不 执 行 远 端 指 令 ( 端 口 转 发 时 候 用 ) L <local port>:<target host>:<target host port> ssh server host 本 地 端 口 转 发, 访 问 本 地 local port 后 流 量 通 过 ssh server host 再 转 发 到 targethost:target port 上 R <remote port>:<target host>:<target host port> ssh server host 其 实 这 里 ssh server 也 可 以 是 本 地 (localhost), 但 是 得 先 开 启 sshd 服 务
利 用 freeshell 在 寝 室 也 能 获 得 校 园 网 ssh D 23333 p 30764 jerryjia@ssh.freeshell.ustc.edu.cn 还 可 以 加 T 如 果 不 想 被 分 配 一 个 pty 的 话 再 附 上 v 看 输 出 可 以 帮 助 自 己 理 解 过 程 然 后 本 地 浏 览 器 进 行 设 置, 例 如 chrome 就 proxyswitchy sharp 下 进 行 设 置 选 socks5 代 理 还 可 以 用 privoxy 之 类 的 工 具 将 其 转 换 为 http 代 理 ( 这 样 ftp 什 么 的 就 不 行 咯 )
scp 基 于 ssh 的 网 络 传 输 其 实 就 是 ssh+cp 在 cp 的 基 础 上 添 加 ssh 的 user@host:/path/to 就 行 了 /etc/ssh/{ssh_config,sshd_config}
文 本 网 络 浏 览 工 具 links lynx w3m
这 里 介 绍 的 都 是 比 较 基 本 简 单 的 命 令, 像 ip,ifconfig,curl 等 有 更 多 强 大 的 又 灵 活 的 功 能, 不 过 这 个 涉 及 进 一 步 学 习 网 络 的 原 理, 本 人 使 用 的 也 不 多 iptables 是 linux 内 核 支 持 的 防 火 墙 工 具, 功 能 非 常 强 大, 是 我 们 值 得 我 们 进 阶 学 习 的