让 Raspberry Pi 通过虚拟机中的 Ubuntu 连接到互联网

让 Raspberry Pi 通过虚拟机中的 Ubuntu 连接到互联网

我在 OS X 的虚拟机中安装了 Ubuntu 12.04.5 LTS。Raspberry Pi 通过直接以太网线连接到同一台 Mac。Mac 通过 wifi 连接互联网。

我想将 RPI 连接到互联网,但是ping <ip>wget <url>不起作用。奇怪的是,apt-get它确实可以工作。在 Ubuntu 虚拟机中,一切都可以连接到互联网,完全没有问题。

sudo tcpdump -a -v -i eth1如果我在 Ubuntu 机器和RPI 中执行操作ping 8.8.8.8,我可以看到流量正在到达 Ubuntu,但 RPI 没有得到响应。我在 Ubuntu 中看到以下内容:

10.0.0.101 > google-public-dns-a.google.com: ICMP echo request, id 2156, seq 1, length 64
09:49:47.008804 IP (tos 0x0, ttl 64, id 22891, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.0.101 > google-public-dns-a.google.com: ICMP echo request, id 2156, seq 2, length 64
09:49:48.008648 IP (tos 0x0, ttl 64, id 22985, offset 0, flags [DF], proto ICMP (1), length 84)
...

如果我在 RPI 中执行wget http://google.comcurl等,我总是会看到流量到达 Ubuntu 虚拟机,但永远不会将任何东西返回到 RPI。

如何将 RPI 连接到互联网?

谢谢

答案1

最后我终于让它工作了。我很困惑,因为apt-get它工作正常,所以我认为 Ubuntu VM 中的一切都设置正确,但事实并非如此。我从这篇文章中找到了解决方案https://support.hidemyass.com/hc/en-us/articles/202721486-Using-Linux-Virtual-Machine-instead-of-a-router-for-VPN

在你的 Ubuntu VM 中,假设eth0:互联网,eth1:你的 RPI 通过以太网电缆连接

sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A POSTROUTING -t nat -j MASQUERADE
sudo iptables-save | sudo tee /etc/iptables.sav

取消注释 /etc/sysctl.conf 中的此行

net.ipv4.ip_forward=1

apt-get他最初工作的原因对我来说仍然是一个谜。

相关内容