我希望能够在 WIFI 和 LAN 之间交换数据包。
我的 Ubuntu 14.04 服务器作为局域网 wifi 路由器运行,有两个物理以太网端口(p4p1和p5p1)以及WIFI模块(wlan0)。p4p1 接口是我与互联网的连接,它通过 DHCP 从我的提供商处获取其地址。
wlan0和p5p1连接到网桥br0使用静态地址192.168.3.1。两个单独的接口都没有地址。dnsmaq 为 br0 处的每个设备分配一个 IP 地址。我使用了这指导我设置路由器。
我可以通过 LAN 和 WIFI 访问互联网。也可以从服务器控制台 ping 每个设备。但我无法从网络的一部分连接到另一部分。因此,我的 WIFI 打印机只能由服务器操作,而不能由客户端操作。
我可以确认数据包已发送并到达网桥 br0,但它们无法到达网桥后的接口。这已使用 wireshark 进行了测试。
配置:
/etc/networking/interfaces
auto lo
iface lo inet loopback
auto p4p1
iface p4p1 inet dhcp
auto br0
iface br0 inet static
address 192.168.3.1
netmask 255.255.255.0
broadcast 192.168.3.255
bridge_ports p5p1 wlan0
路线-n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 XXX.XXX.XXX.1 0.0.0.0 UG 0 0 0 p4p1
XXX.XXX.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 p4p1
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
有什么明显的故障吗?也许是在路由表中?
编辑1: 我已经在 /etc/sysctl.conf 中取消注释了此行。
net.ipv4.ip_forward=1
因此,解决方案来自达伦特不工作。
编辑2: 有人知道为什么路由表的第三行网关是 0.0.0.0 吗?这可能是问题的根源吗?难道不应该是 192.168.3.1 吗?
编辑3:我简化了我的 /etc/networking/interfaces 文件。
编辑4:由于我仍在尝试解决这个问题,因此这是我的
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-ssh tcp -- anywhere anywhere multiport dports ssh
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-ssh (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
答案1
我找到了问题的根源。我的 iptables FORWARD 链有策略“降低” 采纳。
我需要重新设计我的 iptables 规则。但我基本上做了
iptables --policy FORWARD ACCEPT
而且效果非常好。
答案2
服务器是否配置为转发收到的包?尝试以下操作:
sudo sysctl net/ipv4/ip_forward=1