首先让我解释一下我要解决的问题:
我有一部 Android 2.2 手机,它通过 USB 将其互联网连接绑定到运行 Ubuntu 10.10 的笔记本电脑。我想要做的是通过以太网电缆与另一台运行 Ubuntu 10.10 的笔记本电脑共享此互联网连接。
我一直在互联网上搜索,但我没有看到任何人尝试这样做的案例。如果有人知道任何资源,请告诉我。
我认为我已经让设备通过 ping 以单向通信,但无法以另一种方式通信。我认为互联网连接被阻塞了。
我的操作方法是通过使用 NAT 的 Firestarter,安装在手机插入的机器上,并使用以下指南:http://www.fs-security.com/docs/connection-sharing。
基本上,提供连接的接口是 usb0,我试图通过 eth0 共享连接。我基本上只是遵循了上述指南,用 usb0 替换 eth0 实例,用 etho0 替换 etho1 实例。它说要做的唯一一件事是我做不到的是在 Android 手机上启用 DHCP,因为坦率地说我不知道怎么做。
我手动配置了网络,而不是使用 Firestarter 的 DHCP 选项,因为我希望最终不必使用 firestarter 来执行此操作。
更具体地说,这是我所做的:通过 GUI 网络连接:
在第一台笔记本电脑上(与手机连接的那台)
IP 地址:192.168.0.1 网络掩码:255.255.255.0 默认网关 (IP):
在第二台笔记本电脑上,再次通过网络连接:IP 地址:192.168.0.2 网络掩码:255.255.255.0 默认网关:192.168.0.1 *我的 /etc/resolv.conf 文件实际上没有显示任何内容,所以这可能是一个问题。
*此外,我刚刚尝试通过 Firestarter 通过以太网共享我的无线连接,但也没有成功。我可以在两台笔记本电脑之间 ping 通,但无法上网。
底部说明了如何测试设置。我可以像指南中说的那样 ping 192.168.0.2 并得到响应。但是,我无法在应该获得共享连接的笔记本电脑上访问 google.com。此外,在第二台笔记本电脑上,我可以 ping 到手机。但是,我无法从手机 ping 到第二台笔记本电脑。这就是我认为我无法上网的原因。
我不知道要怎么做才能使此连接正常工作。我是否需要在手机所连接的笔记本电脑上桥接 usb0 和 eth0 之间的连接?或者 Firestarter 已经在这样做了?
** 附注:如果我在运行 Firestarter 的机器上关闭它,我就无法从第二台笔记本电脑 ping 通手机。
如果有人知道如何实现这个功能,我将非常感激。
答案1
这些步骤有点低级,可以使用例如当前 GNOME 3 发行版上的 NetworkManager 来自动执行。但是,以下是适用于各种 Linux 发行版和版本的较低级别说明:
步骤1:使usb0
通过 USB 直接连接到手机的盒子上的互联网连接正常工作。
第2步:插入计算机之间的以太网电缆。
步骤3:使用以下命令主持人计算机,以 root 身份,或包装在sudo
:
ifconfig eth0 192.168.0.1
中(或在指定 LAN IP 段
ifconfig eth0 netmask 255.255.255.0
步骤4:使用以下命令客户计算机(当前没有互联网连接的计算机),以 root 身份登录,或者换行sudo
:(
ifconfig eth0 192.168.0.2
前三个数字应该相同;最后一个数字应该不同,与主机的私有 IP 不同)
ifconfig eth0 netmask 255.255.255.0
步骤5: 改编自这里,以 root 身份执行这些步骤,或者sudo
在主持人电脑:
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -o usb0 -j MASQUERADE
/sbin/iptables -A FORWARD -i usb0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -i eth0 -o usb0 -j ACCEPT
如果你有现有的设置(例如 Firestarter 所做的设置),你可能必须刷新主机上的 iptables,前执行步骤5:
iptables -F
您可以使用以下方式检查现有设置
iptables -L
最后:您可能已经拥有了 LAN 上的私有 IP 地址usb0
。不得在 NAT上使用与 NAT 相同的 IP 子网eth0
。因此,如果您的 usb0 有 192.168.0.10,则您无法在两台计算机上的 eth0 上使用 192.168.0.x 中的任何内容。
答案2
您必须通过 USB 进行网络共享吗?如果至少有一台电脑有 Wifi,那么您应该能够在 Android 中创建一个 Wifi AP,在其中一台笔记本电脑上连接 Wifi,然后通过以太网将两台笔记本电脑连接在一起。配置“中间”笔记本电脑以通过其 Wifi 连接路由流量。例如,在 Windows 中,您可以配置适配器以共享互联网连接。
我上面提到的任何功能都不适用于 USB 网络共享,所以您最好切换到 WiFi。