域名和hostname

最近用git克隆远程仓库时总是超时,报错说是代理的问题,但打开和关闭代理都没能解决问题,后面了解到可以关闭git命令的全局代理:

git config --global --unset http.proxy
git config --global --unset https.proxy

如果下次要用的话也可以重新打开:

git config --global http.proxy http://127.0.0.1:4780
git config --global https.proxy http://127.0.0.1:4780

这里的http://127.0.0.1感觉挺有趣的,我们上网的时候地址中常常不会出现具体的ip地址,而是使用便于记忆的域名。这种情况下,首先需要经过dns服务器对域名进行解析,得到对应的ip地址,再根据这个ip地址从客户端向服务器发起网络连接。

比如访问https://github.com,首先是浏览器会在后台请求dns服务器或从本地缓存中获取它具体的ip地址。我们可以采用ping github.com的方式获取对应的服务器地址:

$ ping github.com

正在 Ping github.com [20.205.243.166] 具有 32 字节的数据:
来自 20.205.243.166 的回复: 字节=32 时间<1ms TTL=64
...

可以看到github.com对应的服务器ip地址是20.205.243.166 ,那么,我们就可以采用https://20.205.243.166 的方式来访问github,它等效于https://github.com,而前者不需要经过dns解析过程。

在本地的主机中,我们也可以设置一个ip地址的hostname,这个hostname和域名类似。比如在linux中通过在/etc/hosts文件中设置127.0.0.1地址的hostname为localhost,于是当我们访问https://localhost时,等价于访问https://127.0.0.1,但这个过程不需要经过dns解析,因为hostname是我们自己定义在/etc/hosts文件中的,所以首先会去查询/etc/hosts文件,如果没有结果,再去进行dns解析。

Reference:

git fatal: unable to access Failed to connect to localhost port 1080: Connection refused

DNS/HOST 详解

域名解析过程中,主机名通常用于标识网络中的特定设备,而域名则用于定义这些设备所属的网络区域。将主机名添加到域名前面的过程实际上是将主机名与域名进行拼接,从而形成完整的 FQDN(Fully Qualified Domain Name,完全限定域名)。这一过程可以通过 DNS 配置、脚本处理或系统配置文件修改来实现。 ### 1. 修改 `resolv.conf` 文件实现域名追加 在 Linux 系统中,`/etc/resolv.conf` 文件用于配置 DNS 解析器的行为。可以通过设置 `search` 或 `domain` 指令来实现将主机名自动附加到指定域名前缀前。 #### 使用 `search` 指令 `search` 指令允许指定多个域名后缀,系统会依次尝试将主机名附加到这些域名后缀上进行解析。 ```bash nameserver 8.8.8.8 search example.com dev.example.com ``` 假设主机名为 `server1`,当尝试解析 `db` 时,系统会尝试解析 `db.example.com` `db.dev.example.com`。 #### 使用 `domain` 指令 `domain` 指令只能指定一个域名后缀,所有未明确指定域名的主机名都会被附加到该域名后。 ```bash nameserver 8.8.8.8 domain example.com ``` 此时,主机名 `server1` 将被解析为 `server1.example.com`。 > 注意:某些网络管理工具(如 `NetworkManager` 或 `systemd-resolved`)可能会在重启网络服务后覆盖 `/etc/resolv.conf` 文件的内容。为避免配置被覆盖,可以将其配置为只读文件或修改网络接口配置文件(如 `/etc/sysconfig/network-scripts/ifcfg-<interface>`)[^2]。 ### 2. 配置 `/etc/hostname` `/etc/hosts` 文件 在大多数 Linux 系统中,主机名由 `/etc/hostname` 文件定义,而 `/etc/hosts` 文件用于本地 DNS 解析。 #### 设置主机名 ```bash echo "server1" > /etc/hostname hostname server1 ``` #### 配置 `/etc/hosts` ```bash 127.0.0.1 localhost 192.168.1.10 server1.example.com server1 ``` 这样,系统在解析 `server1` 时会自动将其映射到 `server1.example.com`。 ### 3. 使用脚本动态生成 FQDN 如果需要在脚本中动态生成完整的 FQDN,可以使用以下方法: #### Bash 示例 ```bash HOSTNAME=$(hostname) DOMAIN="example.com" FQDN="${HOSTNAME}.${DOMAIN}" echo "FQDN: $FQDN" ``` #### Python 示例 ```python import socket hostname = socket.gethostname() domain = "example.com" fqdn = f"{hostname}.{domain}" print(f"FQDN: {fqdn}") ``` ### 4. 配置 DHCP 客户端以自动附加域名 在使用 DHCP 获取 IP 地址的环境中,可以通过 DHCP 服务器配置客户端自动附加域名。例如,在 `dhclient.conf` 文件中添加: ```bash send host-name "server1"; request domain-name-servers, domain-name; ``` 这将确保客户端从 DHCP 服务器获取域名并自动附加到主机名前。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值