接下来我们需要将eth0网络包数据转发到wlan0中,我们需要修改/etc/sysctl.conf文件,找到#net.ipv4.ip_forward=1去掉其前面的#号,并将其值修改为1:
net.ipv4.ip_forward=1
执行下面命令启用系统的ipv4包转发:
sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
以上两步只是启用了系统的ipv4包转发的配置选项,但并没有真正的对数据包做转发,我们还需要配置iptables防火墙,设置ipv4的包转发功能:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
执行上面命令之后iptables防火墙只是临时生效了,一旦树莓派重启这些设置就都清空了,我们需要将这个设置保存到树莓派的磁盘(sdcard)上,执行:
sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
然后在/etc/rc.local中exit 0前加入:
iptables-restore < /etc/iptables.ipv4.nat
于是树莓派在开机启动后就会从/etc/iptables.ipv4.nat载入我们的防火墙规则,并启用ipv4包转发功能,将eth0的数据包转发到wlan0中。同时在修改/etc/rc.local时也可以在exit 0前加入加入下面内容:
sudo service hostapd start
sudo service dnsmasq start
这样一来hostapd和dnsmasq就也随树莓派开机启动时启动了。
Copyright © 2015-2023 问渠网 辽ICP备15013245号