首页 > 解决方案 > 虚拟接口的名称解析

问题描述

我的 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 适配器进行。请让我知道在这种情况下名称解析有什么问题。

标签: linuxdnsbridgetun

解决方案


推荐阅读