再会,
我正在尝试复制路由器和 Ubuntu PC 之间的设置,并在我的 MacBook(10.6,Snow Leopard)上运行相同的设置。
首先,我有一台带 USB 端口的路由器。当我将其插入我的 Ubuntu PC 时,它会创建一个 RNDIS 连接,允许我通过 IP 连接通过 USB 电缆连接到路由器。当我通过 USB 将其插入我的计算机时,它会被分配一个 IP 地址 172.16.84.1,当我输入 时会出现一个新的适配器ifconfig
。然后我可以通过 SSH 进入设备。ssh [email protected]
当我登录到设备时,我会刷新路由,然后创建默认路由:
admin@localhost> route -f
admin@localhost> route add default 172.16.84.2
现在,在我的 Ubuntu 机器上,我使用 iptables 启用 IP 伪装:
root@Valhalla> sudo iptables -t nat -A POSTROUTING -s 172.16.84.2 -j MASQUERADE
完成所有操作后,路由器就可以通过 USB 连接访问我电脑的互联网。
我现在正尝试在我的 MacBook (Snow Leopard) 上复制此确切设置,但iptables
OSX 上不存在,甚至没有 Macports 版本。我浏览了 StackOverflow 上涵盖该ipfw
命令用法的其他问题,该命令显然可以作为 的替代品iptables
。但是,语法明显不同,我几乎不知所措。
是否有任何有经验的人ipfw
可以建议我如何实现这一点,并通过 IP 伪装创建 NAT 连接,就像我使用 Ubuntu PC 一样?
谢谢您的帮助。
答案1
好吧,使用 OSX 执行此操作的最简单方法是使用System Preferences
-> Sharing
-> Internet Sharing
。您检查Internet Sharing
并配置它,使其状态为Share your connection from Ethernet 2
(我假设您的 USB 网络设备显示为),To computers using Ethernet
(我假设您希望您的本地网络在以太网上,否则选择机场或任何相关内容)。
最实际的方法确实是使用 ipfw 和 route。简单的谷歌搜索可以在以下 URL 上找到有关这两种方法的良好教程:
http://www.ibiblio.org/macsupport/ipfw/(命令行方式在 GUI 方式之后)
高血压
答案2
为什么你不在 macosx 上使用简单的互联网共享?系统偏好设置 > 共享 > 互联网共享
对于 ipfw nat 规则是(例如,您的互联网是 en0 和本地接口是 en1)
- sysctl -w net.inet.ip.fw.one_pass=1 (您需要是 root 身份)
- sysctl -w net.inet.ip.forwarding=1
- /sbin/ipfw add 1040 允许任何 ip 通过 en1 到任何 ip(允许通过本地接口传递的所有内容)
- /sbin/ipfw add divert natd all 从任意位置到任意位置通过 en0
- /sbin/ipfw add pass all from any to any natd -interface en0 (其中 en0 是您的传出接口)
- /usr/sbin/natd -interface en0 (nat 本身)