虚拟接口的名称解析

问题描述

我的 Ubuntu 20.04 虚拟机上有一个 NAT 类型的虚拟 NIC,它通过主机将它连接到 Internet。对于某些处理,我需要通过我必须编写的程序来路由所有传入和传出的数据包。例如,假设我必须丢弃一些数据包并且不让它们离开 VM。

为此,我创建了一个包含以下内容的虚拟界面:

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 适配器进行。请告诉我在这种情况下名称解析出了什么问题。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)