我正在尝试在 Ubuntu 18.04 上设置无线接入点,以将流量从无线客户端转发到通过以太网连接的主机。无需任何互联网接入,只需两个传感器组件相互通信即可。
设置如下:
主机设备(192.168.44.1)--Ubuntu PC 以太网端口(192.168.44.20)--Ubuntu PC Wifi AP(192.168.42.1)--客户端(192.168.42.X)
归根结底,我并不关心 PC,它应该只是充当在客户端和主机之间传输所有软件包的桥梁。
我目前遇到的问题如下:我可以从我的 PC ping 主机和客户端。我可以从客户端 ping PC,但无法从客户端设备 ping 主机设备。我觉得 iptables NAT 是问题所在,我需要设置一个合适的网桥,但我似乎无法做到这一点。
也许有人可以帮我填补缺失的部分,这是我目前所得到的:
/etc/网络/接口 改编自https://help.ubuntu.com/community/WifiDocs/WirelessAccessPoint
auto lo
iface lo inet loopback
# Connection to host A
auto eth0
iface eth0 inet static
address 192.168.44.20
netmask 255.255.255.0
# Wireless AP
auto wlan0
iface wlan0 inet static
hostapd /etc/hostapd/hostapd.conf
address 192.168.42.1
netmask 255.255.255.0
我net.ipv4.ip_forward = 1
在 sysctl.conf 中启用了
iptables:
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface wlan0 -j ACCEPT
dnsmasq配置文件
interface=eth0,wlan0
no-dhcp-interface=lo,eth0
dhcp-range=192.168.42.20,192.168.42.254,255.255.255.0,12h
hostapd.conf
interface=wlan0
driver=nl80211
ssid=someTestID
hw_mode=g
channel=1
macaddr_acl=0
ignore_broadcast_ssid=0
auth_algs=1
wpa=2
wpa_key_mgmt=WPA-PSK
rsn_pairwise=TKIP
wpa_passphrase=thisIsMyPassPhrase
答案1
一些没有明确设置、可能缺失的内容包括:
systemd-已解决
此服务可能会干扰dnsmasq
。运行ps auxf|grep dnsmasq
并查看正在运行的实例是否正在使用您的配置文件运行 - 或者如果没有正在运行的实例,则可能由于端口 53 被占用而被阻止。禁用systemd-resolved
或告知dnsmasq
不绑定到端口 53。
DHCP 网关(选项 3)和 DNS(选项 6)dnsmasq
检查客户端计算机上的 DNS 和网关。dnsmasq
可能无法自动选择网关和 DNS - 添加 dhcp-option=3,192.168.42.1 和 option=6,1.1.1.1。
其他 iptables 规则
您可以运行sudo iptables -nvxL
并sudo iptables -t nat -nvxL
查看是否有其他防火墙程序正在ipfw
运行,这可能会干扰您的防火墙规则。将您的配置移至该程序,更改优先顺序,或禁用它。
iptables
FORWARD
规则
最后一点:如果您正在进行 NAT,则不需要该FORWARD
规则。
但是,如果您可以在路由器上通过 192.168.44.20 添加 192.168.42.0/24 的路由,则无需执行 NAT 并可以跳过伪装规则 - 在这种情况下您确实需要转发规则 - 但可能仅当您docker
在此机器上运行时才会这样,因为它将FORWARD
策略设置为REJECT
。
当然,您只需发出sudo iptables ...
命令即可实时测试任何迭代。您甚至可以进一步禁用 Network-Manager 和 systemd.reslolved,并在不同的终端或屏幕下以前台/调试模式运行,hostapd
这样dnsmasq
就很容易实时看到哪里出了问题。