有些情况下我们需要将连接并认证过的wifi共享出来,这样就无需多个认证达到多人使用了

手动配置

无线网卡是否支持AP模式

无线设备必须兼容 nl80211标准 ,并且支持 AP (Access Point)工作模式。可通过 iw list 命令查看无线网卡设备信息, 输出信息到Supported interface modes 段落中要有 AP 模式:

1
iw list

输出中包含* AP代表支持AP模式,可开启热点

1
2
3
4
5
6
7
8
9
10
11
<!--more-->
Wiphy phy1
...
Supported interface modes:
...
* AP
...
valid interface combinations:
* #{ managed } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1,
total <= 2048, #channels <= 1, STA/AP BI must match
...

注意:#channels <=1 代表开启的热点必须所连wifi用同一信道

创建热点接口

查看无线网卡设备接口

1
ip a
1
2
3
4
wlan0: ...
link/ether ...
inet ...
...

创建虚拟接口

1
2
3
sudo iw dev wlan0 interface add wifi_ap type managed addr 12:34:56:78:ab:cd
# 或
sudo iw phy phy0 interface add wifi_ap type managed addr 12:34:56:78:ab:cd

如需删除接口使用命令sudo iw dev wifi_ap del即可删除

可使用macchanger给虚拟接口生成一个随机Mac地址

1
sudo macchanger -r wifi_ap

如需恢复Mac地址使用命令macchanger -p wifi_ap

配置热点

安装hostapd

1
sudo pacman -S hostapd

配置hostapd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
sudo vim /etc/hostapd/hostapd.conf
# 添加

# 热点名
ssid=test_wifi_ap
# 配置密码
wpa_passphrase=password
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP

# 修改

# 接口
interface=wifi_ap
# 信道(保持与wifi一样)
channel=1


# 其它使用默认,也可自行根据注释说明修改

logger_syslog=-1
logger_syslog_level=2
logger_stdout=-1
logger_stdout_level=2
ctrl_interface=/run/hostapd
ctrl_interface_group=0
hw_mode=g
beacon_int=100
dtim_period=2
max_num_sta=255
rts_threshold=-1
fragm_threshold=-1
macaddr_acl=0
auth_algs=3
ignore_broadcast_ssid=0
wmm_enabled=1
wmm_ac_bk_cwmin=4
wmm_ac_bk_cwmax=10
wmm_ac_bk_aifs=7
wmm_ac_bk_txop_limit=0
wmm_ac_bk_acm=0
wmm_ac_be_aifs=3
wmm_ac_be_cwmin=4
wmm_ac_be_cwmax=10
wmm_ac_be_txop_limit=0
wmm_ac_be_acm=0
wmm_ac_vi_aifs=2
wmm_ac_vi_cwmin=3
wmm_ac_vi_cwmax=4
wmm_ac_vi_txop_limit=94
wmm_ac_vi_acm=0
wmm_ac_vo_aifs=2
wmm_ac_vo_cwmin=2
wmm_ac_vo_cwmax=3
wmm_ac_vo_txop_limit=47
wmm_ac_vo_acm=0
eapol_key_index_workaround=0
eap_server=0
own_ip_addr=127.0.0.1

网络设置

可使用网桥或NAT两种模式,网桥模式还得单独取得认证才能上网,而NAT模式则是认证后再将网络转发分享出来

NAT设置

启动包转发

检查包转发配置情况

1
sudo sysctl -a |grep forward

信息为用于控制每个默认值,每个接口的转发的选项,以及每个接口的IPv4 / IPv6的单独选项

启用临时包转发

1
sudo sysctl net.ipv4.ip_forward=1

要想选择性地为某一个具体的网卡提供包转发,使用sysctl net.ipv4.conf.interface_name.forwarding=1来代替

永久开启需编辑/etc/sysctl.d/30-ipforward.conf

1
2
3
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1

启用NAT

使用iptables配置规则来启用NAT

1
2
3
4
5
6
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wifi_ap -o wlan0 -j ACCEPT

# 保存规则
sudo iptables-save > /etc/iptables/iptables.rules

使用nftables启用NAT

1
2
3
4
5
6
sudo nft add table ip nat
sudo nft add chain ip nat prerouting { type nat hook prerouting priority 0 \; }
sudo nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }

# 永久保存
sudo nft list ruleset > /etc/nftables.conf

配置DHCP

配置DHCP自动分配IP,可通过使用dhcpddnsmasq来启用DHCP服务

DHCP服务器必须允许UDP端口67的传入连接。对于DNS请求,还必须允许到UDP / TCP端口53的传入连接。

1
2
3
4
5
6
iptables -I INPUT -p udp --dport 67 -i net0 -j ACCEPT
iptables -I INPUT -p udp --dport 53 -s 192.168.123.0/24 -j ACCEPT
iptables -I INPUT -p tcp --dport 53 -s 192.168.123.0/24 -j ACCEPT

# 保存规则
sudo iptables-save > /etc/iptables/iptables.rules

使用dhcpd配置

给接口添加静态IP

1
sudo ip addr add 10.0.0.254/24 dev wifi_ap

配置hdcpd服务
需要安装dhcpd

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 原有的 dhcpd.conf 中包含多个未被注释的示例,所以先将其备份再新建一个
sudo mv /etc/dhcpd.conf /etc/dhcpd.conf.backup
sudo vim /etc/dhcpd.conf

# 添加配置内容
option domain-name-servers 114.114.114.114,8.8.8.8;
option subnet-mask 255.255.255.0;
option routers 10.0.0.254;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.0 10.0.0.0;
}

# 配置MAC地址绑定固定IP
option domain-name-servers 114.114.114.114,8.8.8.8;
option subnet-mask 255.255.255.0;
option routers 10.0.0.254;
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.0 10.0.0.0;
host macbookpro{
hardware ethernet 11:22:33:aa:bb:cc;
fixed-address 10.0.0.10;
}
}

启动DHCP服务
1
2
3
4
5
# 启用IPv4 DHCP
sudo systemctl start dhcpd4

# 启动IPv6 DHCP
sudo systemctl start dhcpd6

开启热点

启动hostapd即可

1
sudo systemctl start hostapd

使用脚本

安装

详解参考create_ap仓库

ArchLinux系可直接用pacman安装

1
sudo pacman -S create_ap

使用

添加虚拟网络接口并设置地址

1
sudo iw dev wlan0 interface add wifi_ap  type managed addr 12:34:56:78:ab:cd

配置热点

1
sudo create_ap -c 11 wifi_ap\ eth0 SSID passwowd

参考:
Linux连接wifi同时开启热点
Software access point
Linux 设置 wifi 共享(wifi 到 wifi)

克隆代码仓库出现异常,异常码如下

1
2
3
4
error: RPC 失败。curl 18 transfer closed with outstanding read data remaining
fatal: 远端意外挂断了
fatal: 过早的文件结束符(EOF)
fatal: index-pack 失败

这是因为代码仓库过大导致git clone异常,调整传输参数即可,其中524288000 = 500*1024*1024,即500M

1
git config --global http.postBuffer 524288000

删除一个大文件

有一个很大的200GB的日志文件需要删除。rm和ls命令崩溃,可能是由于巨大的磁盘IO造成的,要删除这个大文件

1
2
3
4
5
> /path/to/file.log 
# 或
: > /path/to/file.log
# 然后删除
rm /path/to/file.log
阅读全文 »

Linux到独立显卡分开源驱动和闭源驱动两种,开源驱动不能完全发挥独立显卡到性能,闭源驱动使用bumblebeeoptirun 的兼容性不好。而 optimus-manager 可以设置开机默认使用 Intel 还是 Nvidia ,可以随时在这两者之间切换。

阅读全文 »

Ibus是Linux上打输入法引擎,搜狗使用的是Fcitx引擎,但受够了搜狗的中文乱码问题(花了三天在网找各种方案尝试都没解决),且Gnome桌面已经集成了IBus,现在决定跳槽IBus,虽然没有了像搜狗输入法那样的好看皮肤,但比没法输入好。

安装

安装ibus

1
sudo pacman -S ibus

安装中文输入法rime

阅读全文 »

搜索的艺术

在平时使用搜索引擎的过程中,通常是将需要搜索的关键字输入搜索引擎,然后就开始了漫长的信息提取过程。其实搜索引擎对关键字提供了多种语法,合理使用这些语法,将使我们得到的搜索结果更加精确。各个搜索引擎的语法都是大致一样的,只有少部分语法不同或被禁止的。

阅读全文 »

清理系统中无用的包

arch系

1
sudo pacman -R $(pacman -Qdtq)

debian系

1
sudo apt-get autoremove

清理包缓存

arch系

1
2
sudo pacman -Sc 	# 清除未安装包的缓存
sudo pacman -Scc # 清理所有缓存
阅读全文 »

名词

花式加s

  • 专有名词、普通名词
  • 可数名词、不可数名词
  • 具体名词、抽象名词

专有名词

专有名词(大多数为不可数名词,在某些情况下可以复数使用,或转换为普通名词,单/复数使用)

阅读全文 »

替换Marked

hexo 默认的渲染引擎是marked,但是 marked 不支持 MathJaxpandockramed ,能够支持MathJax

pandoc项目

kramed项目

先卸载原来默认的渲染引擎hexo-renderer-marked,然后安装hexo-renderer-pandoc

1
2
yarn remove hexo-renderer-marked
yarn add hexo-renderer-pandoc

安装 hexo-renderer-pandoc 还需要安装 pandoc (version >=2.0) 渲染器支持,Arch 安装: sudo pacman -S pandoc

hexo-renderer-kramed 是基于 hexo-renderer-marked 改的,所以不用单独安装渲染器,但 next 官方不推荐使用。

阅读全文 »