我的路由器的无线组件突然开始出现故障并断开连接,因此我临时用旧上网本搭建了一个 WAP,并将其连接到此路由器。我对网络一无所知,所以我肯定这是我的误解,但是虽然 WAP 上的设备可以连接到整个网络,但我不知道如何从有线设备连接到它们。LAN 看起来像这样:
--------------------
| ROUTER |
| 192.168.1.1 |
--------------------
| | | | |
Modem A B C |
|
-----------------
| D (WAP) |
| 192.168.1.22 |
| 192.168.45.1 |
-----------------
_ _ _
= = =
E F G
设备 A、B 和 C 位于 192.168.1.x IP 范围内。无线设备 E、F 和 G 位于 192.168.45.x 上。
因此,如果我从 E ping A,我会得到响应。但是,根据 wireshark,ping 源自 192.168.1.22。从 A 在其 .45.x 地址上 ping E 时无法访问。
/etc/udhcpd.conf:
start 192.168.45.2
end 192.168.45.18
interface wlan0
remaining yes
opt dns 192.168.1.1 8.8.8.8
opt subnet 255.255.255.0
opt router 192.168.45.1
opt lease 864000
/etc/hostapd/hostapd.conf:
interface=wlan0
ssid=MYWAP
hw_mode=g
channel=6
auth_algs=1
wmm_enabled=0
wpa=2
wpa_passphrase=mypassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
在 /etc/网络/接口:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.22
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
iface wlan0 inet static
address 192.168.45.1
netmask 255.255.255.0
up iptables-restore < /etc/iptables.ipv4.nat
IP转发脚本如下:
sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.conf
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
sh -c "iptables-save > /etc/iptables.ipv4.nat"
我尝试在调制解调器连接的路由器上设置静态路由,但没有成功:
Destination LAN IP: 192.168.45.0
Subnet Mask: 255.255.255.0
Default Gateway: 192.168.1.22
Interface: LAN & Wireless
有没有办法轻松地规范网络发现,以便有线设备可以使用连接到 WAP 的无线打印机等?我做错了吗?我能以某种方式将它们全部放在同一个子网上,并将 DHCP 功能留给原始路由器吗?
答案1
有没有办法轻松地规范网络发现,以便有线设备可以使用连接到 WAP 的无线打印机等?我做错了吗?我能以某种方式将它们全部放在同一个子网上,并将 DHCP 功能留给原始路由器吗?
我认为您已经回答了自己的问题。通常,自动发现依赖于不跨子网的广播数据包 - 尤其是涉及任何与 Samba 相关的内容时。老实说,如果您希望所有设备都表现得像在同一个网络上一样,那么您可能应该将它们全部放在同一个网络中。
如果您想走这条路线(我认为这是根据要求最合适的解决方案),您需要连接笔记本电脑的有线和无线连接。
Debian 有一个软件包可以为您完成这项任务。
apt-get install bridge-utils
安装完成后,你必须使用以下命令创建桥接
brctl addbr br0
这将创建一个桥接接口,您可以将其他接口分配给该接口。
但在执行此操作之前,您必须关闭接口并删除其 IP 地址(它们稍后将共享一个地址)...
ifconfig eth0 0.0.0.0 down
ifconfig wlan0 0.0.0.0 down
将接口连接到我们之前创建的桥接连接
brctl addif br0 eth0
brctl addif br0 wlan0
最后,启动接口
ifconfig eth0 up
ifconfig wlan0 up
ifconfig br0 up
这应该会在大约 2-3 分钟内启动接口之间的信息流。如果您还需要笔记本电脑本身在桥接器上进行通信,则应该为桥接接口分配一个 ipaddress。
ifconfig br0 192.168.1.22
仅供参考 - 无线接口有时会对转发广播数据包很挑剔,这实际上取决于您的硬件。但我会尝试一下,看看这是否适合您。
答案2
使用以下流程:
- 使用该设备作为有线网络和无线网络之间的桥梁
- 下载 bridge_utils 包
用于
brctl
设置两个设备之间的桥梁/usr/sbin/brctl addbr br0 /sbin/ifconfig br0 up /usr/sbin/brctl addif br0 eth0 /usr/sbin/brctl addif br0 wlan0 /sbin/ifconfig br0 192.168.1.101 /sbin/ip route add default gw 192.168.1.1 /usr/sbin/dhcpd wlan0_0
参考
答案3
正如您所述,问题在于跨不同子网的发现。
要解决您的问题,您应该确保系统上启用了计算机浏览器服务。您也可以设置 WINS 服务器来解决这个问题。
例如要在 Windows 7 中启用计算机浏览器服务,请运行 services.msc,选择计算机浏览器,然后设置为自动启动。
如果您愿意只使用一个子网,桥接将移除不同的子网,并可能解决问题的根源。但如果子网的存在是一个问题约束,那么就无法做到这一点。
微软有一篇关于计算机浏览器服务的精彩文章。请参阅https://technet.microsoft.com/en-us/library/cc737661%28v=ws.10%29.aspx。它涵盖了一些情况,包括跨路由器分离子网的计算机浏览器服务。好文章。例如,它建议不要通过路由器转发 NetBIOS 广播。即便如此,如果您仍然遇到问题,可能需要进一步尝试。