Ubuntu DNS解析不了,上不了网

本文介绍了一种在Ubuntu系统中正确配置DNS的方法。通过将本地网关IP加入DNS设置,可以确保域名正常解析并实现上网功能。文章展示了具体的配置文件内容及参数设置。
dns设置 要加入 本地的网关ip,否则还是解析不了域名,上不了网。

root@ub-task:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static

address 192.168.1.152
netmask 255.255.255.0
gateway 192.168.1.1

dns-nameservers 223.5.5.5 223.6.6.6 192.168.1.1

root@ub-task:~#


[img]http://dl2.iteye.com/upload/attachment/0111/5136/9cec3670-a1fd-3cd5-9669-1246656a81e2.png[/img]
<think> 我们正在处理用户关于Ubuntu 20.10无法连接外的问题。根据之前的引用和用户的问题,我们需要提供解决方案。 引用[1]中提到的问题是可以连接内无法连接外,并给出了手动增加关的解决方法。引用[2]中提到在设置IP地址时不能与子IP一模一样,否则无法连接外。引用[3]展示了路由表信息。引用[4]则是在双卡配置中设置了两个关,这可能导致路由冲突。 用户的问题:Ubuntu 20.10连不上外。 可能的原因及解决方案: 1. DNS配置问题:无法解析域名,但可以ping通IP(如8.8.8.8)。 2. 默认关缺失或错误:导致外流量无法正确路由。 3. 多卡配置冲突:当有多个卡时,如果配置了多个关,可能会导致路由混乱。 4. IP地址配置错误:比如子掩码设置错误,或者IP地址与关不在同一子。 我们将按照以下步骤进行排查和解决: 步骤1:检查络连通性 - 尝试ping一个外IP(如8.8.8.8) ```bash ping 8.8.8.8 ``` 如果通,说明络层是通的,问题可能出在DNS无法解析域名);如果不通,则可能是路由问题。 步骤2:检查DNS配置 - 查看/etc/resolv.conf文件,确保里面有正确的DNS服务器地址(如114.114.114.114或8.8.8.8) - 注意:在Ubuntu 20.10中,resolv.conf可能是由systemd-resolved或NetworkManager动态生成的,修改它可能无效。建议通过netplan或NetworkManager配置DNS。 步骤3:检查关和路由 - 使用命令`ip route`或`route -n`查看默认关(default)是否正确。 - 如果没有默认关,需要添加: ```bash sudo ip route add default via <关IP> ``` 但这只是临时的,永久配置需要在netplan或NetworkManager中设置。 步骤4:检查络配置文件(Ubuntu 20.10使用netplan) - 配置文件位于/etc/netplan/*.yaml - 示例配置(单卡): ```yaml network: version: 2 renderer: networkd # 或者NetworkManager,根据系统使用的渲染器 ethernets: ens33: # 卡名称 dhcp4: no addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 114.114.114.114] ``` - 注意:如果有多块卡,只能有一个默认关(gateway4),其他卡不应设置关(gateway4)或者使用路由规则(routes)来指定特定络的路由。 步骤5:应用配置并重启络 - 应用netplan配置: ```bash sudo netplan apply ``` - 如果使用NetworkManager,可以重启其服务: ```bash sudo systemctl restart NetworkManager ``` 步骤6:如果有多个卡,检查路由表是否冲突 - 使用`ip route`查看,确保只有一个默认关(default)。 - 如果有多个默认关,需要删除多余的,并在配置文件中只保留一个。 根据引用[4]的例子,双卡配置中两个卡都设置了gateway4,这会导致出现两个默认关,从而引起冲突。正确的做法是只在一个卡上设置gateway4(作为默认关),另一个卡只设置IP和子掩码,并通过routes指定特定络的路由(如果有需要)。 例如,双卡配置(一个默认关,另一个只用于内): ```yaml network: version: 2 renderer: NetworkManager ethernets: eth0: dhcp4: false addresses: [192.168.1.100/24] gateway4: 192.168.1.1 # 默认关 nameservers: addresses: [8.8.8.8, 114.114.114.114] eth1: dhcp4: false addresses: [10.0.0.100/24] # 不设置gateway4,因为不需要默认关 # 如果10.0.0.0/24络需要经过特定关,可以设置路由 # routes: # - to: 10.0.0.0/24 # via: 10.0.0.1 # metric: 100 ``` 步骤7:重启系统或络服务后验证 - 重启络服务(根据前面提供的重启卡命令)或重启系统。 - 再次测试外连接。 如果问题仍然存在,可以尝试禁用IPv6(有时IPv6配置问题会导致连接外异常): - 在netplan配置文件中,在卡配置下添加: ```yaml accept-ra: no dhcp6: no ``` 或者在内核参数中禁用IPv6(不推荐,除非必要)。 另外,防火墙也可能导致无法连接外,检查防火墙设置: ```bash sudo ufw status ``` 如果激活,尝试暂时关闭: ```bash sudo ufw disable ``` 然后再测试,如果恢复,则需要配置防火墙规则。 最后,如果以上步骤都不能解决,可能需要查看系统日志: ```bash journalctl -u systemd-networkd -u NetworkManager --since "5 minutes ago" ``` 生成的相关问题: 1. 如何为Ubuntu 20.10配置静态IP地址? 2. 在Ubuntu中如何设置多个DNS服务器? 3. 如何解决双卡环境下的络路由冲突? 4. 如何禁用Ubuntu的IPv6支持? 5. Ubuntu 20.10中如何查看和管理防火墙? 注意:在引用中提到的修改/etc/resolvconf/resolv.conf.d/head和/etc/resolv.conf的方法在Ubuntu 20.10中可能不适用,因为现在通常使用netplan或systemd-resolved管理DNS。建议通过netplan配置文件设置DNS。 下面给出完整的回答: </think> ### Ubuntu 20.10 无法连接外的解决方案 以下是逐步排查和解决问题的完整流程,结合引用内容和系统特性: #### 1. 检查基础络连通性 ```bash ping 8.8.8.8 # 测试基础IP连通性 ping cn.bing.com # 测试DNS解析能力 ``` - 若IP通但域名不通 → **DNS问题**(参考步骤3) - 若IP不通 → **路由/关问题**(参考步骤2)[^1][^3] #### 2. 关与路由配置(核心问题) **(1) 检查当前路由表** ```bash ip route # 或 route -n ``` 重点关注: - `default via <关IP>` 是否存在且正确 - 卡对应的子路由(如 `10.219.91.0/24 dev ens33`) **(2) 修复关配置** 编辑Netplan配置文件: ```bash sudo nano /etc/netplan/*.yaml ``` 修改示例(关键点): ```yaml ethernets: eth0: dhcp4: false addresses: [192.168.1.100/24] # 最后一个数字≠0[^2] gateway4: 192.168.1.1 # 确保是正确关 nameservers: addresses: [8.8.8.8, 114.114.114.114] ``` **重要规则**: 1. 单卡只保留一个`gateway4` 2. 多卡时仅主卡设关[^4] 3. IP地址与关需同子 **(3) 应用配置** ```bash sudo netplan apply ``` #### 3. DNS解析故障解决 **(1) 强制更新DNS配置** ```bash sudo rm /etc/resolv.conf # 删除旧链接 sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf sudo systemctl restart systemd-resolved ``` **(2) 手动配置DNS** 编辑Head文件(持久化): ```bash sudo nano /etc/resolvconf/resolv.conf.d/head ``` 添加: ``` nameserver 8.8.8.8 nameserver 114.114.114.114 ``` 更新服务: ```bash sudo resolvconf -u ``` #### 4. 双卡特殊处理(引用[4]案例) 当存在多个卡时: ```yaml ethernets: eth0: # 主卡(连接外) addresses: [172.21.1.64/24] gateway4: 172.21.1.1 # 仅此处设置关 nameservers: [8.8.8.8] eth1: # 第二卡(仅内) addresses: [192.168.2.3/24] # 不设gateway4! [^4] routes: - to: 192.168.2.0/24 via: 192.168.2.1 ``` #### 5. 高级故障排查 ```bash # 追踪路由路径 traceroute 8.8.8.8 # 检查ARP缓存 ip neighbour # 查看硬件状态 ethtool eth0 | grep "Link detected" # 检查防火墙 sudo ufw status # 临时关闭: sudo ufw disable ``` #### 验证修复 ```bash ping -c 4 google.com curl -I https://ubuntu.com nslookup ubuntu.com ``` ### 相关问题 1. 如何检测Ubuntu系统中的关冲突? 2. 双卡环境下如何配置策略路由? 3. systemd-resolved和NetworkManager服务冲突如何解决? 4. 如何在Ubuntu服务器上永久禁用IPv6? 5. Netplan配置错误导致无法启动络时如何恢复? > **注意**:操作需管理员权限,修改配置文件前建议备份: > ```bash > sudo cp /etc/netplan/*.yaml ~/netplan_backup.yaml > ``` > 若仍存在问题,可通过`journalctl -u systemd-networkd -b`查看启动日志[^1][^3] [^1]: 引用[1]显示DNS配置需同时修改`/etc/resolv.conf`和`/etc/resolvconf/resolv.conf.d/head` [^2]: 引用[2]强调IP地址末位不能与子地址相同(如xxx.0) [^3]: 引用[3]展示正确路由表应包含default关 [^4]: 引用[4]双卡配置错误案例警示只能有一个默认
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值