核心概念
在 Solaris 10 中,网络配置围绕几个关键组件和文件展开。

接口名称
Solaris 10 中的网络接口命名遵循特定规则:
- 物理接口:
hme0: 千兆以太网 (较老的 Sun 机器)e1000g0: Intel 千兆以太网 (非常常见)bge0: Broadcom 千兆以太网nge0: NVIDIA/NetGear 千兆以太网
- 虚拟接口:
hme0:1,e1000g0:2: 在同一个物理接口上配置的多个 IP 地址(别名接口)。
关键配置文件
所有网络配置的持久化存储都在以下几个文件中:
-
/etc/hostname.<interface>: 最重要的文件,它定义了哪个接口应该在系统启动时被配置。- 如果文件内容为
dhcp,则该接口通过 DHCP 获取 IP 地址。 - 如果文件内容为静态 IP 地址(如
168.1.100)或主机名(如果配置了 DNS),则会进行相应配置。 - 如果文件不存在或为空,则该接口在启动时不会被配置。
- 如果文件内容为
-
/etc/inet/hosts: 本地主机名到 IP 地址的静态映射文件,相当于 Linux 中的/etc/hosts。
(图片来源网络,侵删) -
/etc/netmasks: 定义网络子网掩码的文件。168.1.0 255.255.255.0,对于 CIDR 表示法(如/24),这个文件通常不是必须的,但 Solaris 10 的某些旧工具可能仍依赖它。 -
/etc/nsswitch.conf: 名称服务切换配置文件,它决定了系统在查找主机名、IP 地址、用户等信息时,应该首先查询哪个源(如files,dns,ldap)。hosts: files dns表示先查/etc/hosts文件,再查 DNS。 -
/etc/defaultrouter: 指定默认网关,文件中只包含一行,即默认网关的 IP 地址,168.1.1。 -
/etc/hostname6.<interface>: 用于 IPv6 地址配置的文件,内容与 IPv4 类似。
(图片来源网络,侵删) -
/etc/inet/ipnodes: 与/etc/inet/hosts类似,但同时支持 IPv4 和 IPv6 地址的映射。
网络服务
网络服务由 Solaris Service Management Facility (SMF) 统一管理,SMF 是 Solaris 10 引入的一个重大改进,用于替代传统的启动脚本(/etc/rc*)。
- 网络物理层:
network/physical(svc:/network/physical:default) - 网络接口:
network/loopback(svc:/network/loopback:default),network/initial - DHCP 客户端:
network/dhcp(svc:/network/dhcp:default) - 路由守护进程:
route:default(svc:/network/routing/route:default)
网络配置步骤
场景 1: 配置静态 IP 地址
假设你要为 e1000g0 接口配置静态 IP 地址 168.1.100,子网掩码 255.255.0,默认网关 168.1.1。
-
创建或编辑
hostname文件:# 编辑 /etc/hostname.e1000g0 文件,写入静态IP地址 echo "192.168.1.100" > /etc/hostname.e1000g0
-
设置子网掩码:
- 方法 A (推荐,使用
netmask命令):# 使用 ifconfig 命令立即设置,并写入配置 ifconfig e1000g0 netmask 255.255.255.0 broadcast + # 将此设置持久化 echo "192.168.1.100 netmask 255.255.255.0" >> /etc/hostname.e1000g0
- 方法 B (使用
/etc/netmasks文件):# 编辑 /etc/netmasks 文件,添加网络地址和掩码 echo "192.168.1.0 255.255.255.0" >> /etc/netmasks
- 方法 A (推荐,使用
-
设置默认网关:
# 编辑 /etc/defaultrouter 文件,写入网关地址 echo "192.168.1.1" > /etc/defaultrouter
-
配置主机名解析:
# 编辑 /etc/inet/hosts 文件,添加主机名和IP的映射 echo "192.168.1.100 my-solaris-box" >> /etc/inet/hosts
-
重启网络服务使配置生效:
# 1. 禁用并启用物理网络服务,这是最彻底的刷新方式 svcadm disable network/physical svcadm enable network/physical # 或者,如果只是想重启单个接口 ifconfig e1000g0 down ifconfig e1000g0 up # 2. 重启路由服务(如果修改了网关) svcadm restart route:default
场景 2: 配置 DHCP
假设要让 e1000g0 接口通过 DHCP 自动获取 IP 地址。
-
创建或编辑
hostname文件:# 编辑 /etc/hostname.e1000g0 文件,写入 dhcp echo "dhcp" > /etc/hostname.e1000g0
-
确保 SMF 的 DHCP 服务已启用:
# 检查服务状态 svcs network/dhcp # 如果状态是 disabled,则启用它 svcadm enable network/dhcp
-
重启网络服务:
svcadm restart network/physical
重启后,系统会自动通过 e1000g0 接口发起 DHCP 请求,获取 IP、子网掩码、网关和 DNS 服务器地址。
常用网络命令
Solaris 10 的网络命令与 Linux 非常相似,但有一些细微差别和 Solaris 特有的工具。
| 功能 | Solaris 10 命令 | Linux 命令 | 说明 |
|---|---|---|---|
| 配置接口 | ifconfig |
ip addr / ifconfig |
ifconfig -a 查看所有接口;ifconfig e1000g0 192.168.1.100 netmask 255.255.255.0 up 配置接口。 |
| 查看路由表 | netstat -rn |
ip route / netstat -rn |
-r 显示路由表,-n 以数字形式显示(不解析主机名)。 |
| 测试连通性 | ping / ping |
ping / ping6 |
ping -s 1472 host 可以指定数据包大小。 |
| 跟踪路由 | traceroute / traceroute6 |
traceroute / traceroute6 / mtr |
Solaris 的 traceroute 通常需要 root 权限。 |
| DNS 查询 | nslookup / dig / host |
nslookup / dig / host |
nslookup www.google.com |
| 端口扫描 | nc (netcat) / nmap |
nc (netcat) / nmap |
nc -zv host port 检查端口是否开放。 |
| 查看网络连接 | netstat -an |
ss -tulpn / netstat -an |
-a 所有,-n 数字,-p 进程ID (Solaris可能需要额外选项)。 |
| 查看接口统计 | netstat -i / kstat |
ifconfig / ip -s link |
kstat -s link 查看详细的内核网络统计信息。 |
| 网络诊断 | snoop |
tcpdump |
snoop -d e1000g0 -v host 192.168.1.1 抓取指定接口的数据包。 |
故障排查
-
检查接口状态:
# 查看所有接口的详细信息 ifconfig -a # 查看特定接口 ifconfig e1000g0
检查
status是否为up,inet是否有正确 IP,netmask是否正确。 -
检查网络服务状态:
# 查看所有网络相关服务 svcs | grep network # 查看特定服务详情 svcs -v network/physical
确保服务状态是
online,如果服务有fault,使用svcs -xv network/physical查看错误原因。 -
检查路由表:
netstat -rn
确认默认路由(目标为
default或0.0.0)存在且指向正确的网关。 -
检查名称解析:
# 检查 /etc/nsswitch.conf 的 hosts 行 grep "^hosts" /etc/nsswitch.conf # 手动测试 DNS 解析 nslookup your-dns-server # 手动测试 hosts 文件解析 grep your-hostname /etc/inet/hosts
-
检查防火墙: Solaris 10 自带 IP 过滤器,默认情况下可能是禁用的,但需要确认。
# 检查 IP 过滤器状态 ipfstat -i # 查看入站规则 ipfstat -o # 查看出站规则 ipfstat -s # 查看统计信息 # 临时禁用 IP 过滤器 (需要 root) ipf -D # 永久禁用需要编辑 /etc/ipf.conf 和 /etc/ipf.conf6,并重启 ipf 服务。
-
使用
snoop抓包: 这是 Solaris 网络诊断的终极武器,如果以上步骤都无法解决问题,抓包分析是必不可少的。# 抓取 e1000g0 接口上所有去往或来自 192.168.1.1 的流量 snoop -d e1000g0 -v host 192.168.1.1 # 捕获并保存到文件 snoop -d e1000g0 -o capture_file.cap # 稍后分析 snoop -i capture_file.cap
Solaris 10 的网络管理虽然命令行操作较多,但其基于 SMF 的服务和清晰的配置文件结构使得系统非常稳定和可预测,掌握 ifconfig、netstat、svcs 以及 /etc 目录下的几个核心配置文件,是管理和排查 Solaris 10 网络问题的关键,对于现代运维人员来说,了解这些经典系统的操作方式依然具有很高的价值。
