无需网络管理器即可共享 Internet 连接

无需网络管理器即可共享 Internet 连接

我跟着这些说明使用 iptables 设置共享互联网连接。具体来说,我:

  1. 在 /etc/network/interfaces 中为我的第二个 NIC 添加了网络接口,如下所示:

    auto eth1

    iface eth1 inet static

    address 192.168.1.100

    netmask 255.255.255.0

  2. 准确输入这些规则:

    sudo iptables -A FORWARD -o eth0 -i eth1 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT

    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    sudo iptables -t nat -F POSTROUTING

    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

  3. 将我的规则保存到文件中并将其添加到 /etc/rc.local

  4. 通过将 /proc/sys/net/ipv4/ip_forward 的值更改为 1 来启用 IP 转发

  5. net.ipv4.ip_forward=1取消注释/etc/sysctl.conf 中的行

  6. 已重启

现在,当我将笔记本电脑插入 eth1 接口时,我会获得一个 IP 地址并可以 ping 网关,但我无法访问网关之外的任何东西。即,我无法 ping 8.8.8.8。

如果相关的话,我的另一个接口是 PPPoE 连接。它看起来像这样:

auto dsl-provider
iface dsl-provider inet ppp
pre-up /sbin/ifconfig eth0 up
provider dsl-provider

auto eth0
iface eth0 inet manual

我认为问题可能是 dnsmasq 没有分配名称服务器,因此我dns-nameservers 8.8.8.8 8.8.8.4在 /etc/network/interfaces 中添加了两个接口。这没有帮助,所以我尝试将名称服务器添加到 /etc/resolv.conf。没有帮助。最后,我尝试将它们添加到 /etc/dnsmasq.conf:

no-resolv
server=8.8.8.8
server=8.8.4.4

这也没有帮助。但我不确定我的问题是否真的与名称服务器有关,或者这只是又一个过时、毫无价值的文档案例。

我曾经能够使用网络管理器来实现这一点,但我不喜欢网络管理器不让我分配 DHCP 范围。所以我不想再回到那种情况了。

答案1

固定的:

sudo iptables -A FORWARD -o ppp0 -i eth1 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

再次感谢#openwrt 的 g0rdon :)

相关内容