我在 NAT 配置方面遇到了问题。我使用 Ubuntu 12.04 将笔记本电脑用作路由器。在终端中,我输入:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
但是当使用 LAN 电缆将路由器(我的笔记本电脑)连接到客户端时,客户端仍然无法连接到互联网。但是客户端可以 ping 通路由器。
我该如何解决这个问题?
答案1
您的 NAT 防火墙规则没有问题,但是默认情况下 ubuntu 不转发数据包,因此您需要使用以下命令启用它:
echo 1 > /proc/sys/net/ipv4/ip_forward
为了使其自动化,您可以使用如下脚本(保存在/etc/init.d/your-script
):
#!/bin/sh
# turn ip_forward on/off
case "$1" in
'start')
echo 1 > /proc/sys/net/ipv4/ip_forward
;;
'stop')
echo 0 > /proc/sys/net/ipv4/ip_forward
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0
并使其可执行并在启动时运行:
sudo chmod +x /etc/init.d/your-script
sudo update-rc.d your-script defaults
启用:sudo /etc/init.d/your-script start
和sudo /etc/init.d/your-script stop
禁用。
更新:正如保罗所评论的,如果您愿意,为了使其永久生效(或者如果您愿意编辑 conf 文件来打开/关闭此功能),您可以修改/etc/sysctl.conf
并取消注释该行以net.ipv4.ip_forward=1
启用并注释掉以禁用。