linux - 虚拟接口的名称解析
问题描述
我的 Ubuntu 20.04 虚拟机上有一个 NAT 类型的虚拟 NIC,它通过主机将其连接到互联网。对于某些处理,我需要通过我编写的程序路由所有传入和传出的数据包。例如,假设我必须丢弃一些数据包并且不让它们离开虚拟机。
为此,我创建了一个具有以下内容的虚拟接口:
modprobe dummy
ip link add tun0 type dummy
ifconfig tun0 up
对于所有不直接通过 NIC 的流量,我添加了:
ip route add default dev tun0
现在一切正常。例如当我
ping 4.2.2.4
,我看到当我的程序没有运行时 ping 没有被回答,并且在它运行时得到了正确的回答。该程序现在就像 enp0s3 和 tun0 之间的桥梁。整个流量都通过我的程序进行路由。只是存在一个问题,名称解析。那时我
ping google.com
,名称无法解析。现在的路由表如下:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 0.0.0.0 0.0.0.0 U 0 0 0 tun0
0.0.0.0 10.0.2.2 0.0.0.0 UG 20100 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp0s3
当然,如果我
sudo route del default
,名称解析通过主机正确地通过 NAT 适配器进行。请让我知道在这种情况下名称解析有什么问题。
解决方案
推荐阅读
- python - 在python中删除另一个数据框中具有公共列值的数据框中的行
- c - C 中的致命错误 - 没有这样的文件或目录
- flutter - 未来
项目空/空/相同的值| 扑 - gremlin - 为什么对 tinkergraph 和 janusgraph 运行相同的查询会产生不同的结果?
- python - AttributeError:'Seq' 对象在 Biopython 的 ProtParam 模块中没有属性 'islower'
- c - 如何搜索字符串的一部分并显示它?
- regex - 带前瞻的多行正则表达式
- selenium - 从具有相同类名的对象列表中选择正确的元素
- node.js - 我可以在我的节点应用程序中同时使用 REST 和 SOAP 吗?是否会影响应用程序的性能
- java - 如何在 Spring Boot 应用程序中配置两个数据源 JDBC?