环境
- 开发板 eth0 / 192.168.1.3 (连接虚拟机的USB网卡)
- vm虚拟机Ubuntu:
ens38 / 192.168.1.2 USB网卡连接开发板
ens33 / 192.168.150.11 虚拟机本地网卡,可上外网 - 网络路径:
【开发板】-> 【ubuntu虚拟机USB网卡】 -> (通过NAT转发) -> 【 ubuntu虚拟机本地网卡】 ->【外网】
配置步骤
1. Ubuntu虚拟机的配置
1.1 打开NAT转发
echo "1" > /proc/sys/net/ipv4/ip_forward
1.2 配置iptables转发规则
# 例如虚拟机连接开发板的USB网卡IP网段为 192.168.1.0,虚拟机能够上网的网卡是 ens33 (192.168.150.11),则配置如下:
sudo iptables -t nat -A POSTROUTING -o ens33 -s 192.168.1.0/24 -j MASQUERADE
1.3 查看nat转换表
sudo iptables -t nat -nL
$ sudo iptables -t nat -nL
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 0.0.0.0/0 ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- 0.0.0.0/0 !127.0.0.0/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.17.0.0/16 0.0.0.0/0
MASQUERADE all -- 192.168.1.0/24 0.0.0.0/0
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- 0.0.0.0/0 0.0.0.0/0
2. 开发板配置
配置开发板网络路由走虚拟机的USB网卡:
# 检查当前路由
route -n
# 如果有不正确的默认路由,先删除,例如
sudo route del default gw 192.168.1.1
# 配置正确的路由 (192.168.1.2是虚拟机的USB网卡IP)
sudo route add default gw 192.168.1.2
ping外网IP测试:
ping 8.8.8.8
设置DNS服务器和外网URL测试
编辑/etc/resolv.conf
# cat /etc/resolv.conf
...
nameserver 192.168.1.2
...
ping域名测试 ping www.baidu.com