如何将eth0转发给wlan0?


0

我尝试使用NAT在我的Raspberry Pi B +上将eth0转发到wlan0 iptables 使用以下命令:

echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A FORWARD --in-interface eth0 -j ACCEPT iptables --table nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE

但是当我尝试时,它没有用 ping google.com 我有 ping: unknown host google.com 在我的笔记本电脑上,它连接到我的Raspberry Pi B +上的eth0端口。在我的Raspberry Pi B +上,我只能从wlan0正常上网。  我的wifi网络上的IP地址看起来是这样的:192.168.1.xxx。

如何将eth0转发给wlan0?


1)尝试ping IP,而不是主机名。主机名解析也需要DNS。 2)您说您可以从Wlan访问您的RPI。然后in界面是wifi,out是eth0,不是吗? ( revsys.com/writings/quicktips/nat.html
Shiki

如果我ping IP,我明白了 host not reachable
wb9688

好吧那么,那些界面呢?输入哪个是输出? Wlan0是你连接互联网的地方,对吧? “ On my Raspberry Pi B+, I just have normal internet access from wlan0.
Shiki

@Shiki是的,wlan0已连接到互联网
wb9688

您的笔记本电脑上的路由表是什么? ip route show
MariusMatutiae

Answers:


0

iptables允许您过滤流量,并像您一样设置NAT转换,但它实际上与将设备设置为路由器以在两个接口之间转发流量无关。实际上与此相关的唯一命令是ip_forward。剩下的就是Pi和笔记本电脑上的IP设置。

(澄清一下,你的第二行确实告诉iptables允许流量进入eth0并且转发到除Pi本身以外的任何地方,但它实际上不允许流量以其他方式流动,因此它本身无用,并且只有你才有意义'默认设置iptables删除所有FORWARD流量)

因此,如果Pi本身具有互联网访问权限,那么您需要解决的真正问题是:

  • 什么是网络eth0端的IP设置,一切都排好,以便您的笔记本电脑可以与Pi正常通信,并且您的笔记本电脑是否使用Pi的eth0地址作为网关?

  • 如果你已经更改了iptables足以默认拒绝所有FORWARD流量并且只有上面的规则生效,你上面的规则确保数据包可以退出但没有回复可以回来,那么你真的希望iptables过滤什么?


这些命令是我在互联网上找到的地方。我从来没有改变过某些iptables设置。我需要在eth0端设置什么?
wb9688

@ wb9688 - 一个不同于wlan0方面的本地网络,所以Pi可以告诉两者分开,应该是所有需要的。您的笔记本电脑在同一网络上应具有不同的IP,并且具有Pi的地址。具有MASQ目标的nat表应该可以防止您需要更多。详细信息将取决于现在,在Pi和笔记本电脑两侧分配的IP(或在wlans情况下,从任何接入点获得),所以请注释或者将其添加到您的问题中。
Radhil

0

至少显示的命令看起来正确。如果这不是您在Raspberry Pi上使用的完整防火墙配置,即如果您有其他规则或更改了默认转发策略(默认情况下是ACCEPT,使用iptables -P更改),您可能还需要启用通过添加状态匹配来回复流量:

iptables -I FORWARD 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

这将使连接跟踪器能够将回复数据包检测为属于内部接口上发起的同一连接并接受它们。

我无法确定,如果Raspberry Pi内核未启用conntrack匹配,则必须使用(旧的,已弃用的)状态扩展:

iptables -I FORWARD 1 -m state --state ESTABLISHED,RELATED -j ACCEPT

您只需要输入其中一个。我更喜欢在链中添加这个作为第一条规则。

Raspberry Pi上的eth0接口和它后面的计算机应该有来自另一个网络的地址。例如,您可以在RasPi上使用192.168.10.1/24(或相同的/255.255.255.0),在目标主机上使用192.168.10.2。

在目标主机上,您将RasPi的eth0地址(在前面的示例中为192.168.10.1)设置为默认网关,将DNS服务器设置为与RasPi上设置的相同。您可以通过在其上发布来检查RasPi使用的服务器:cat /etc/resolv.conf,并查看“nameserver”条目。或者您可以设置谷歌公共DNS(8.8.8.8,8.8.4.4)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.