ubuntu上hostapd共享上网

在ubuntu主机上安装hostapd,让手机可以共享上网,
ubuntu主机有2个网卡

eth0: (可以上公网)
IP:动态

wlan0:(不能上公网,在这个接口上安装hostapd)
IP:192.168.5.1/24

1、安装hostapd

sudo apt install hostapd

升级hostapd(可以不用升级)

git clone git://w1.fi/srv/git/hostap.git
cd hostap/hostapd
cp defconfig .config
make
sudo cp hostapd /usr/sbin/hostapd

2、配置hostapd

新建/etc/hostapd/hostapd.conf

interface=wlan0
driver=nl80211
ssid=TP-LINK_TEST  #热点名称
channel=10
hw_mode=g
wpa=3
wpa_passphrase=12345678 #无线密码
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
ignore_broadcast_ssid=0 #0:显示热点名称 1:隐藏热点名称

使用vi /etc/init.d/hostapd对该文件进行编辑,修改内容如下

DAEMON_CONF="/etc/hostapd/hostapd.conf"

不让NetworkManager管理无线设备, c8:3a:35:cb:18:e0是wlan0的mac地址

sed -i '/\[keyfile\]/a unmanaged-devices=mac:c8:3a:35:cb:18:e0' /etc/NetworkManager/NetworkManager.conf
sudo systemctl restart NetworkManager.service

3、启动hostapd

sudo systemctl start hostpad.serive

如果hostapd开启正常,手机上就能看到TP-LINK_TEST这个热点,连接时发现他不能获取IP,那是UBUNTU上没安装dnsmasq软件,这里就不说明了,我们在手机上直接设置静态IP

IP: 192.168.5.11
网关:192.168.5.1
DNS:8.8.8.8

4、NAT共享网络

配置wlan0的IP

sudo ifconfig wlan0 192.168.5.1/24

启用路由转发,编辑/etc/sysctl.conf 文件,删除起始的“#”,解除

net.ipv4.ip_forward=1

的注释。然后使其生效:

sudo sysctl -p

配置NAT规则

sudo iptables -A FORWARD -o eth0 -i wlan0 -s 192.168.5.0/24 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -t nat -F POSTROUTING
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

第一条规则允许转发初始网络包,第二条规则允许转发已经建立连接后的网络包,第三条则设置NAT。

5、保存iptables规则

sudo iptables-save > /etc/iptables.rules

iptables.rules内容

# Generated by iptables-save v1.6.0 on Tue Mar 22 14:32:46 2022
*nat
:PREROUTING ACCEPT [18938:1823629]
:INPUT ACCEPT [12879:1428924]
:OUTPUT ACCEPT [9504:655878]
:POSTROUTING ACCEPT [2629:186085]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Tue Mar 22 14:32:46 2022
# Generated by iptables-save v1.6.0 on Tue Mar 22 14:32:46 2022
*filter
:INPUT ACCEPT [1178226:592266889]
:FORWARD DROP [1500:70910]
:OUTPUT ACCEPT [1556034:1578549464]
-A FORWARD -s 192.168.5.0/24 -i wlan0 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
-A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Tue Mar 22 14:32:46 2022

然后新建一个bash脚本(名字随便),并保存到/etc/network/if-pre-up.d/目录下:

#!/bin/bash
iptables-restore < /etc/iptables.rules

这样,每次系统重启后iptables规则都会被自动加载。
不要尝试在.bashrc或者.profile中执行以上命令,因为用户通常不是root,而且这只能在登录时加载iptables规则。

附:
hostapd重启方法

sudo service hostapd stop
sudo ifconfig wlan0 down
sudo nmcli radio wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 192.168.5.1/24 up
sleep 1
sudo service hostapd restart
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要配置路由器上网,可以使用hostapd和dnsmasq两个工具来实现。下面是配置步骤: 1. 安装hostapd和dnsmasq 在Linux系统中使用以下命令安装: ``` sudo apt-get install hostapd dnsmasq ``` 2. 配置hostapd 在终端中打开hostapd的配置文件: ``` sudo nano /etc/hostapd/hostapd.conf ``` 在文件中添加以下配置: ``` interface=wlan0 driver=nl80211 ssid=MyRouter hw_mode=g channel=6 macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_passphrase=mypassword wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP ``` 这个配置文件设置了SSID为"MyRouter",密码为"mypassword",加密方式为WPA-PSK。 保存并关闭文件。 3. 配置dnsmasq 在终端中打开dnsmasq的配置文件: ``` sudo nano /etc/dnsmasq.conf ``` 在文件中添加以下配置: ``` interface=wlan0 dhcp-range=192.168.1.2,192.168.1.20,255.255.255.0,24h ``` 这个配置文件设置了路由器的IP地址为192.168.1.1,DHCP服务器分配的IP地址范围为192.168.1.2到192.168.1.20。 保存并关闭文件。 4. 启动hostapd和dnsmasq 在终端中启动hostapd和dnsmasq: ``` sudo service hostapd start sudo service dnsmasq start ``` 5. 配置网络连接 连接到路由器的无线网络,使用刚才设置的SSID和密码进行连接。如果一切正常,您应该能够在设备上访问互联网了。 注意:由于每个设备的操作系统和版本不同,可能需要根据实际情况进行一些微调。此外,以上配置仅适用于基于Linux的系统。如果您使用的是其他操作系统,请参考相关文档进行配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值