记录AIX环境socket域名链接改造笔记总结
- 1.背景
- 2.改造涉及的内容:
- 2.1.DNS配置:
- 2.2. 改造底层代码:
- 3.涉及知识点总结
- 3.1.DNS解析顺序
- 3.2 /etc/resolv.conf 里面search的作用
- 注意事项
- 3.3 /etc/netsvc.conf 的作用
- 文件格式
- 示例内容
- 各个配置项的含义
- 注意事项
1.背景
以前服务的连接采用的是直接配置IP和端口。后续根据要求修改为域名链接的方式。根据各种资料汇总发现,由于以前的开发人员把函数嵌入到了lib动态库中,而且方式不支持域名连接,因此需要改造。
2.改造涉及的内容:
2.1.DNS配置:
需要在/etc下新增resolv.conf配置文件。里面内容如下:
nameserver xx.xx.xx.xx.
上述地址为DNS的地址。
直接在服务器上执行:nslookup xxx.xxx.xx.com.cn
就可以自动去访问resolv.conf
里面的DNS地址,然后返回xxx.xxx.xx.com.cn
对应的IP地址。
2.2. 改造底层代码:
因为需要用到域名解析,因此需要用到函数gethostbyname
,但是注意该函数返回来的参数是 网络字节序,需要用到inet_ntoa
将其转换为 点分十进制字符串 .
3.涉及知识点总结
3.1.DNS解析顺序
在 AIX 环境下,DNS 解析的顺序通常依据系统配置和网络设置进行。以下是一般情况下 DNS 解析的顺序步骤:
-
本地缓存:
系统首先会检查本地 DNS 缓存(如果有的话)。如果请求的域名已经被缓存,系统就会直接返回缓存中的 IP 地址。
-
/etc/hosts 文件:
如果本地缓存没有找到,系统接着会查阅 /etc/hosts 文件。这个文件包含手动配置的主机名与 IP 地址的映射。如果在此文件中找到匹配的条目,系统将使用该 IP 地址。
- DNS 服务器:
如果 /etc/hosts 文件中也没有,则会询问配置的 DNS 服务器。DNS 服务器的地址通常在 /etc/resolv.conf 文件中配置。
解析请求会按照 resolv.conf 中指定的 DNS 服务器的顺序进行。
- DNS 递归查询:
如果所查询的 DNS 服务器无法解析该请求,它可能会向其他 DNS 服务器发起递归查询,直到找到正确的 IP 地址或返回错误信息。
- 异常处理:
如果上述步骤都未能成功解析域名,系统将返回一个错误,通常是“未找到主机”或类似的提示信息。
配置示例
在 AIX 系统中,你可以通过查看和编辑 /etc/netsvc.conf 和 /etc/resolv.conf 来配置 DNS 解析的行为。例如:
/etc/resolv.conf 示例:
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
DiffCopyInsert
/etc/netsvc.conf 示例:
hosts = local,bind
DiffCopyInsert
这个配置指示系统首先查找本地文件,然后查询 DNS 服务器。
3.2 /etc/resolv.conf 里面search的作用
在 resolv.conf 文件中,search 配置项用于指定一组搜索域。
例如:假设你的 resolv.conf 文件中有如下配置:
search example.com company.com
在这种情况下,如果你执行一个命令,比如连接到主机名 server1,系统会依次尝试以下域名解析:
server1.example.com
server1.company.com
如果 server1 在这两个域名中能被解析(即在这些域中有相应的 DNS 记录),则返回相应的 IP 地址,否则会返回未找到的错误。
search 配置项的示例
# /etc/resolv.conf
nameserver 8.8.8.8
search example.com company.com
DiffCopyInsert
注意事项
- 多个域名:
search 可以包含多个域名,使用空格分隔。如果配置了多个域名,系统会按照配置的顺序进行尝试。- 最大搜索域数:
许多系统对搜索域的最大数目有上限(一般为6个),超出该限制的域名将被忽略。- 搜索域的影响:
合理配置 search 域名,可以提高在内网或特定环境中解析主机名的效率,但也可能导致意外的解析结果,特别是在存在同名主机时。- 避免不必要的 DNS 查询:
过多的 search 域名可能导致系统在解析时增加不必要的延迟,因此应谨慎配置。
通过适当配置 search 域名,可以方便地简化主机名的使用,提高工作效率。
3.3 /etc/netsvc.conf 的作用
/etc/netsvc.conf 是一个在 AIX 和某些 UNIX-like 系统中使用的配置文件,主要用于控制网络服务的名称解析顺序和方式。它定义了系统在进行各种网络服务名称解析时的行为,比如主机名解析。
文件格式
netsvc.conf 的内容一般由键值对组成,每个键对应特定的网络服务解析顺序。最常见的配置项包括:
- hosts:控制主机名解析的顺序。
- services:控制服务名称解析的顺序。
- networks:控制网络名称解析的顺序。
示例内容
一个典型的 netsvc.conf 文件可能如下所示:
# /etc/netsvc.confhosts = local,bind
services = local,bind
networks = local,bind
DiffCopyInsert
各个配置项的含义
- hosts:
可以指定解析顺序。例如 hosts = local,bind 表示系统会首先从本地文件(通常是 /etc/hosts)中查找主机名,然后再向 DNS 服务器(通过 bind)查询。
- services:
规定服务名称解析的顺序,类似于主机名解析,它的默认值也可以是本地服务文件和 DNS。
- networks:
规定网络名称解析的顺序,通常也是从本地配置文件查找。
注意事项
- 文件的作用:
该文件的配置会影响系统在尝试解析网络名称时的行为,因此正确配置对于确保网络功能的正常运行是非常重要的。- 简化管理:
通过设置合适的解析顺序,可以简化网络管理,确保在不同环境中的名称解析行为一致。- 可能的服务:
在某些系统中,文件中的配置项可能会根据具体的网络服务有所不同。
总的来说,/etc/netsvc.conf 文件帮助管理和配置名称解析的顺序,以满足系统和网络环境的需求。确保这个文件的配置适合你的使用场景可以提高系统的网络性能和效率。