[toc]

这里我的raspberry外接了一个网卡eth1,这个eth1直接连接路由器获取互联网络,raspberry自己有一个eth0这个网卡用来接电脑,它(eth0)将运行dhcp服务下发ip给电脑,这样我们的电脑就能拥有网络。你会问我为啥要脱裤子放屁,因为这个eth1网卡可以是通过手机usb共享出来的网络(eth1可以当成手机usb共享的网卡,到时不叫这个名字,这里为了好记忆还是这么叫),我设计这个的目的就是让手机共享网络给树莓派,然后通过树莓派的lan口(eth0)下发局域网给路由器的wan口,路由器会自己再生成一个局域网下发lan口和wifi,设备连wifi和连路由器的lan都在一个局域网内。

换源

  • 清华源bookworm
1
2
3
4
5
6
7
8
9
10
11
cat >/etc/apt/sources.list<<EOF
# 清华源
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
EOF

更新系统

1
apt update -y && apt upgrade -y

eth0处于up状态

这地方很重要!先让网卡起来,然后拥有一个网段的ip(因为我的eth0在192.168.1.0/24这个网段,所以我可以设置除这个网段外的192.168.10.0/24),这个ip将充当网关中转流量也是DHCP服务器。

1
2
sudo ip link set eth0 up
sudo ip addr add 192.168.10.1/24 dev eth0

dhcp服务器安装和设置

1
apt-get install -y isc-dhcp-server

编辑/etc/default/isc-dhcp-server ,在里面改INTERFACESv4=“eth0”就行了

1
vim /etc/default/isc-dhcp-server 

修改dhcpd.conf

1
vim /etc/dhcp/dhcpd.conf 

看我的配置!这里设计了树莓派的lan口下发的ip范围,但你懂得,树莓派就一个lan口,还是自带的,所以只有一个ip就是192.168.10.1,下发的ip是给路由器或者电脑一个设备端使用,这里我就把范围调大了,可以按照自己喜欢调小

1
2
3
4
5
6
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.100 192.168.10.200;
option routers 192.168.10.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}

设置ipv4流量中转

1
sudo vim /etc/sysctl.conf
1
2
# 添加net.ipv4.ip_forward=1
net.ipv4.ip_forward=1

配置载入

1
sudo sysctl -p

防火墙流量放行

1
sudo iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE    # 注意!这个网卡是连接以太网的网卡,不是连接你电脑那个网卡!!!这个网卡是连接外部互联网的网卡,这么理解会不会好点呢!

如果没iptables需要安装

1
sudo apt-get install -y iptables iptables-persistent

保存iptables配置

1
sudo netfilter-persistent save

dhcp服务!启动!

1
sudo systemctl restart isc-dhcp-server

使用过程报错

  • 如果使用过程中是手机usb共享网络的记得要重新获取一下设备ip,我的是华为nova7就是要这样弄的,不然没有网络

  • 如果用的是以太网自动下发的ip地址,就不会出现上述问题

脚本安装

使用该脚本的时候,请把连接Internet的网卡的ip设置为静态,不然重启你会很开心的

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
#!/bin/bash

# 读取网卡名称
read -p "请输入连接Internet的网卡名称: " internet_interface
read -p "请输入共享的网卡名称: " shared_interface

# 设置清华源
sudo tee /etc/apt/sources.list <<EOF
# 清华源
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors4.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
#deb-src https://mirrors4.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
EOF

# 更新系统
sudo apt update -y && sudo apt upgrade -y

# 配置网络接口
sudo ip link set "$shared_interface" up
sudo ip addr add 192.168.2.1/24 dev "$shared_interface"

# 安装 ISC DHCP 服务器
sudo apt-get install -y isc-dhcp-server vim

# 修改 /etc/default/isc-dhcp-server 文件中的 INTERFACESv4
sudo sed -i "/^INTERFACESv4=/c\INTERFACESv4=\"$shared_interface\"" /etc/default/isc-dhcp-server


# 编辑 /etc/dhcp/dhcpd.conf
sudo tee /etc/dhcp/dhcpd.conf <<EOF
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.100 192.168.2.200;
option routers 192.168.2.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
EOF

# 启用 IP 转发
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf

# 重新载入 /etc/sysctl.conf
sudo sysctl -p

# 安装 iptables 和 iptables-persistent
sudo apt-get install -y iptables iptables-persistent

# 保存 iptables 配置
sudo netfilter-persistent save

# 添加 NAT 规则
sudo iptables -t nat -A POSTROUTING -o "$internet_interface" -j MASQUERADE

# 重启 ISC DHCP 服务器
sudo systemctl restart isc-dhcp-server

[toc]

Python环境设置

编译

编译之前得更新一下系统吧!我的是树莓派的raspberry系统,基于debian

1
2
sudo apt update
sudo apt upgrade

安装一下依赖文件

1
sudo apt install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev

下载Python 3.6.8源代码:

1
wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

解压并进入目录

1
2
tar -xzvf Python-3.6.8.tgz
cd Python-3.6.8

配置和编译

1
2
./configure --enable-optimizations --with-ssl --prefix=/usr/local/python3.6.8
make -j4

安装Python

1
sudo make altinstall

使用altinstall而不是install可以避免覆盖系统默认的Python版本。

环境设置

因为没有覆盖上一个Python的环境,所以现在去敲下面命令,就会

1
2
root@raspberrypi:~# python3 --version
Python 3.7.3

出现这样

所以,我不想破环原有的Python3.7.3的前提,使用我的Python3.6.8

编辑/etc/profile.d/python.sh,里面写下面命令

1
2
export PATH=/usr/local/python3.6.8/bin:$PATH
alias python3='/usr/local/python3.6.8/bin/python3.6'

然后source /etc/profile.d/python.sh

再试试看?

1
2
root@raspberrypi:~# python3 --version
Python 3.6.8

芜湖~~~

make_swap.sh

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
#!/bin/bash

# 判断是否为root用户
if [ `id -u` -ne 0 ]; then
echo "请使用sudo或作为root用户运行此脚本以执行必要的操作。"
#在这里1是状态码,表示脚本执行出现了某种问题或错误。通常,成功的执行返回状态码为0,而非零的状态码通常表示错误或异常情况。
exit 1
fi

# 提示用户输入交换文件大小
read -p "请输入交换文件大小(例如16G): " swap_size

# 验证输入是否符合格式,以G结尾表示
if [[ ! $swap_size =~ ^[0-9]+[Gg]$ ]]; then
echo "无效的输入格式,请使用格式如'16G'表示大小。"
exit 1
fi

# 提示用户确认操作
read -p "将创建大小为 $swap_size 的交换文件,是否继续?(y/n): " confirm

if [[ ! $confirm =~ ^[Yy]$ ]]; then
echo "操作已取消."
exit 1
fi

# 计算交换文件大小(这里把上面获取到大小系数和1024相乘,例如,如果swap_size的值是"16G",那么${swap_size%G}将会得到"16",去掉了末尾的 "G"。)
swap_size=$(( ${swap_size%G} * 1024 ))

# 创建交换文件
dd if=/dev/zero of=/swapfile bs=1M count=${swap_size} status=progress

# 设置正确的权限
chmod 600 /swapfile

# 格式化交换文件
mkswap /swapfile

# 启用交换文件
swapon /swapfile

# 将/swapfile追加到/etc/fstab文件内
echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab

echo "交换文件创建成功并已启用,而且追加到/etc/fstab内。"