我跟着这些说明使用 iptables 设置共享互联网连接。具体来说,我:
在 /etc/network/interfaces 中为我的第二个 NIC 添加了网络接口,如下所示:
auto eth1
iface eth1 inet static
address 192.168.1.100
netmask 255.255.255.0
准确输入这些规则:
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
将我的规则保存到文件中并将其添加到 /etc/rc.local
通过将 /proc/sys/net/ipv4/ip_forward 的值更改为 1 来启用 IP 转发
net.ipv4.ip_forward=1
取消注释/etc/sysctl.conf 中的行已重启
现在,当我将笔记本电脑插入 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 :)