Ric*_*sen 7 networking iptables internet connection-sharing virtualbox
我的 Ubuntu 12.04(精确)笔记本电脑具有三个网络接口:
eth0
: 有线接口有时连接到互联网wlan0
: 无线接口有时连接到互联网vboxnet0
:连接到另一台计算机的有线接口(实际上是VirtualBox虚拟接口)(实际上是在host-only模式下联网的VirtualBox虚拟机)我想iptables
用来设置 NAT/IP 伪装以与另一台计算机共享任何已启动的 Internet 连接(如果两者都已启动,则首选有线连接)。
eth0
插入时以下工作:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE &&
sudo iptables -A FORWARD -i eth0 -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o eth0 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
如果我从有线切换到无线,这显然会停止工作。
我试过:
echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward &&
sudo iptables -t nat -A POSTROUTING -o '!vboxnet0' -j MASQUERADE &&
sudo iptables -A FORWARD -i '!vboxnet0' -o vboxnet0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT &&
sudo iptables -A FORWARD -i vboxnet0 -o '!vboxnet0' -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
但它没有用。我可以尝试执行一些网络管理器脚本来iptables
在接口启动或关闭时更改规则,但我认为无需跳过此类问题也是可能的。
有什么建议?
这是一个非常简单的iptables
规则集,它掩盖了一切。这适用于许多更简单的设置。如果该盒子作为一个成熟的路由器 \xe2\x80\x94 工作,它将无法工作,它有一个潜在的讨厌的习惯,即对离开计算机的所有流量进行 NAT。
iptables -A POSTROUTING -o eth+ -t nat -j MASQUERADE\niptables -A POSTROUTING -o wlan+ -t nat -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n\n如果简单的解决方案不起作用,或者您的配置更复杂,则此规则集可能会有所帮助:
\n\nNATIF=\'vboxnet+\'\nMARK=1\niptables -A PREROUTING -t mangle -i $NATIF -j MARK --set-mark $MARK\niptables -A POSTROUTING -o eth+ -t nat -m mark --mark $MARK -j MASQUERADE\niptables -A POSTROUTING -o wlan+ -t nat -m mark --mark $MARK -j MASQUERADE\n
Run Code Online (Sandbox Code Playgroud)\n\n它标记通过任何接口传入的数据包vboxnet*
,然后伪装 (SNAT) 任何传出eth*
或wlan*
带有标记集的数据包。
除了iptables
规则之外,您还需要通过启用数据包转发将主机变成路由器。放:
net.ipv4.ip_forward=1\n
Run Code Online (Sandbox Code Playgroud)\n\n中/etc/sysctl.conf
,然后说
sudo sysctl -p /etc/sysctl.conf.\n
Run Code Online (Sandbox Code Playgroud)\n\n或者:
\n\necho 1 | sudo tee /proc/sys/net/ipv4_ip_forward\n
Run Code Online (Sandbox Code Playgroud)\n\n来宾还必须有一个默认路由,通过主机的外部接口网关数据包(为此,仅主机模式可能无法工作)。检查其路由表(这取决于来宾操作系统)。
\n\n另外,安装wireshark
或tshark
并使用它们来检查数据包。没有更好的方法来解决像这样的一般网络问题。
就我个人而言,我建议将来宾更改为使用桥接模式网络,并为其提供主机的两个接口。然后它可以自行连接,使用路由器上的 DHCP 服务自行获取本地地址。无需 NAT。
\n 归档时间: |
|
查看次数: |
5345 次 |
最近记录: |