raspberry当dhcp服务器共享以太网

[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