我在 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.com
、curl
等,我总是会看到流量到达 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
他最初工作的原因对我来说仍然是一个谜。