问题描述
我的 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 (将#修改为@)