导航:首页 > 网络设置 > 把树莓派网络ip设置为dhcp

把树莓派网络ip设置为dhcp

发布时间:2023-09-07 10:42:37

1. 忘记树莓派的固定IP,如何查找

你弄一个脚本,一个个ping网段内的IP地址。然后用arp -a 看MAC地址。 树莓派的MAC地址很特别。你在网上搜索一下就能找到 。

如果你是在家里上网,那就简单的。通常家里只有几个设备。树莓派的地址一定是在前几个自动分配的IP地址里。比如192.168.1.101-104

2. 1. 树莓派:eth桥接到wlan口,共享上网

背景: 树莓派外接5G无线网卡,推流器连接raspberry 3B lan口,共享上网。

验证: raspberry 3B连接手机的热点,PC通过网线与raspberry的lan口相连,实现上网。

思路:

1. 首先给raspberry的eth设置一个静态ip地址。

2. 修改IP转发规则,允许ip数据的转发。(ip_forward的设置)

3. 路由设置,配置iptables,进行两个网卡的桥接。

4. 开启raspberry的DHCP服务,在eth口上开启。

5. 开启DNS服务。

详细过程:

1. 给树莓派的eth分配静态地址。

暂时分配:

sudo ifconfig eth0 192.168.173.1 255.255.255.0 up

永久分配:

写在配置文件里。

配置文件 /etc/network/interfaces,请注意此处wlan0的地址参数要和etc/udhcpd.conf相关参数相对应。

sudo vi  /etc/network/interfaces

#iface default inet dhcp

增加

auto eth0

iface eth0 inet static

address 192.168.173.1

netmask 255.255.255.0

注意:

2. 启动IP转发

有多种方法,建议使用sysctl的设置方式

方法1:sudo echo 1 > /proc/sys/net/ipv4/ip_forward

方法2:sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

方法3:sudo sysctl -w net.ipv4.ip_forward=1

有的时候需要在/etc/sysctl.conf下添加一行:net.ipv4.ip_forward=1

3. iptables设置

     iptables -t nat -I POSTROUTING -o wlan0 -j MASQUERADE

4. dhcp服务

4.1 安装udhcpd服务

    sudo apt-get update

    sudo apt-get install udhcpd

4.2 配置DHCP服务

    sudo vi /etc/udhcpd.conf

    1. 修改网络接口,设置成对应的网卡号

    2. 设置remaining,去除前面的#符号

    #remaining     yes    改为   remain    yes

    3. 设置树莓派的IP地址

        修改opt router为192.168.173.1,那么配置完成之后这个地址将作为网关,连接到raspberry eth口的设备网关需要设置为此IP.

        此处opt dns被修改为公共的DNS地址 114.114.114.114和 114.114.114.115

4.3 使能DHCP

     配置 /etc/default/udhcpd

    sudo nano  /etc/default/udhcpd

    使用#符号注释DHCPD_ENABLED="no"

    DHCPD_ENABLED="no"    改为     #DHCPD_ENABLED="no"

4.4  启动服务

    1. 启动udhcp的服务:sudo service udhcpd start

    2. 设置开机启动: sudo update-rc.d  udhcpd enable

5. dns服务

在进行调试的时候发现无法查询到raspberry使用的dns地址,按照常规方法查到的dns地址为127.0.1.1。在网上查了一下https://segmentfault.com/q/1010000002443769 感兴趣的可以参考一下这篇文章。

这就导致我在测试的时候遇到一个问题,pc可以通过ip地址访问,但是通过域名无法访问。然后我就在网上查了一些共用的dns服务器,设置后一切正常。关于这些共用的dns信息参考如下:

/********************************************************************************************************************************************************/

A、DNSPod DNS+:DNSPod的 Public DNS+是目前国内第一家支持ECS的公共DNS,是DNSPod推出的公共域名解析服务,可以为全网用户提供域名的公共递归解析服务!

DNS 服务器 IP 地址:

首选:119.29.29.29        备选:182.254.116.116

B、114DNS:国内用户量巨大的DNS,访问速度快,各省都有节点,同时满足电信、联通、移动各运营商用户,可以有效预防劫持。

DNS 服务器 IP 地址:

首选:114.114.114.114        备选:114.114.114.115

C、阿里 AliDNS:阿里公共DNS是阿里巴巴集团推出的DNS递归解析系统,目标是成为国内互联网基础设施的组成部分,面向互联网用户提供“快速”、“稳定”、“智能”的免费DNS递归解析服务。

DNS 服务器 IP 地址:

首选:223.5.5.5        备选:223.6.6.6

/********************************************************************************************************************************************************/

3. 树莓派设置wifi 自动连接无线网络

1.开始配置网络了,修改 sudo vim /etc/network/interfaces 文件,把它修改成这个样子
auto lo

iface lo inet loopback

auto eth0

iface eth0 inet dhcp

allow-hotplug wlan0

auto wlan0

iface wlan0 inet dhcp

    wpa-ssid "你的网络名称"

    wpa-psk "你的密码"

2.重启网络

sudo ifup wlan0

3.查看网络情况

ip addr

4. DHCP 怎样设置

设置和使用DHCP
在FreeBSD的Packages Collection中,有两个不同的DHCP客户机和服务器软件,一个为ISC-DHCP,另一个为WIDE-DHCP,两个软件都包括了DHCP客户软件和服务器软件,其中ISC-DHCP 更为常用一些,这里就以ISC-DHCP为例介绍在FreeBSD上安装和设置DHCP。

为了支持DHCP,首先要确认系统内核支持伪设备bpfilter,如果没有,就需要重新编译内核。伪设备bpfilter 是一个允许应用程序接收网络的原始数据包的界面,这样应用程序就能接收目的地址非本机IP地址的数据包了。DHCP使用bpfilter的原因是在DHCP设置好计算机的TCP/IP之前,由于计算机本身没有定义IP地址,而TCP/IP堆栈本身不会接收不具备本机IP地址的数据包。要接收DHCP服务器发送回客户的数据包,就需要绕过TCP/IP堆栈,而必须使用伪设备bpfilter。

pseudo-device bpfilter 4

定制内核之后,还要保证/dev/目录下具有对应bpfilter的设备文件。

# cd /dev
# sh MAKEDEV bpf0 bpf1 bpf2 bpf3

从Packages Collecion中安装DHCP软件,这将DHCP软件中的dhcpd,dhclient和dhcprelay 安装到/usr/local/sbin目录下。

$ ls /usr/local/sbin/dhc*
/usr/local/sbin/dhclient /usr/local/sbin/dhcpd
/usr/local/sbin/dhcrelay

设置服务器

为了设置DHCP服务器dhcpd,首先就要设置其配置文件/etc/dhcpd.conf。这个配置文件语法简单,比较容易理解。

server-identifier 192.168.3.1;

subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.20;
default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.3.255;
option routers 192.168.3.1;
option domain-name-servers 192.168.3.1;
option domain-name "exampleorg.org.cn";
}
host a1 {
hardware ethernet 00:90:27:4e:92:09;
fixed-address 192.168.3.32;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.3.255;
option routers 192.168.3.1;
option domain-name-servers 192.168.3.1;
option domain-name "exampleorg.org.cn";
}

基本的dhcpd.conf首先使用server-identifier定义了本服务器的IP地址,这对于有多个IP地址的服务器系统十分重要,一般不必设置这个参数,dhcpd能自动侦测。然后定义要分配IP地址的客户机组,每组拥有一个可用的IP地址范围。有两种客户机组的划分方式,一种为指定子网段来区分,一种为指定主机来区分。

这个例子中的第一组定义了一个子网192.168.3.0/24,这个子网段内,可供DHCP服务器分配的I P地址范围为192.168.3.10到192.168.3.20,这个地址范围也可以不是连续的,不连续的地址可以使用多个range设置参数来设置。此外,还设置了这一组内分配的IP地址的租期限制default-lease-time 和max-lease-time,可以使用缺省值,而不必改动。后面的option参数设置DHCP的附加功能,例如设置DHCP客户的网络掩码、广播地址、DNS服务器、域名等等。事实上这些option设置选项也可以被用作全局选项设置,即放置在server-identifier之后,对所有的客户机组起作用。

例子的第二组是针对某个特定主机a1进行的设置,这个主机被限定为以太网地址为hardware ethernet 参数值的计算机,将给这个计算机分配一个固定地址。这种分配方式实际等价于固定地址分配方式,唯一的好处就是能够对IP地址进行集中管理,不必每个计算机分别设置了。这里同样也可以使用option参数,设置TCP/IP的参数。

dhcpd.conf中还能有更多的组,包括对非本网段的子网上的客户机指定的组。

当设置了dhcpd.conf之后,就能启动dhcpd守护进程了,由于计算机会有多个网络界面,需要指定dhcpd 服务器的网络界面,以便回应相应界面上的DHCP请求。

# /usr/local/sbin/dhcpd fxp0

在调试阶段,可以使用-d参数,这样dhcpd就不会进入后台运行,而一直保留在前台,并显示各个与客户计算机通信的过程。当一切都调试完毕之后,就能去除-d参数,并将执行命令放入rc.local启动脚本中,以便系统能够自动执行。

此后,dhcpd正常运行的时候,会将每一次客户请求及其回应的IP地址分配的记录,都记录在/var/run/dhcpd.leases 文件中。为了使dhcpd能正常进行日志记录,应该在启动dhcpd之前使用touch 命令,生成一个新的日志文件。以后就可以查看这个日志文件的内容,以得到当前DHCP服务器的状态和客户机IP地址分配的情况。以下是一个日志文件的部分内容。

lease 192.168.3.11 {
starts 3 1998/11/26 05:46:28;
ends 4 1998/11/27 05:46:28;
hardware ethernet 0:80:c2:12:fd:d;
uid 1:0:80:c2:12:fd:d;
}

touch命令的优点是在存在相关的文件时,不删除或更改文件内容,只更新其访问时间设置,只有在文件不存在时才生成新文件。

然后就能设置网络中的客户计算机使用DHCP协议,获取合法的IP地址了。通常Windows计算机的TCP/IP设置中能直接设置支持DHCP协议,如果为Unix(包括FreeBSD)设置DHCP客户软件,就需要dhclient的支持。

设置客户软件

ISC-DHCP中同样也提供了一个客户程序dhclient,用于FreeBSD系统从DHCP服务器上动态获取一个IP地址。这个程序同样也要求内核支持bpfilter伪设备。

dhclient使用的配置文件为/etc/dhclient.conf,然而最一般的情况下可以不使用它,软件本身的缺省配置就满足一般情况下请求IP地址的需要了。缺省设置下dhclient在获得了IP地址之后,会自动执行/etc/dhclient-script 这个脚本程序,以针对刚获取的动态IP地址进行必要的设置。很多依赖于IP地址的网络服务,就可以在这个脚本中启动,或者针对重新分配的动态IP地址对已有的网络服务进行修正。虽然使用者也许不希望使用这个脚本设置网络,但如果不存在这个脚本程序,或者这个程序不可执行,那么dhclient就不能正常执行。

因此对于最一般的客户机,一般只连接到一个网络上,仅具备一个网络界面,可以使用一个空的dhclient.conf 和空的declient-script文件,就能完成设置IP地址和其他TCP/IP参数的任务了。

# touch /etc/dhclient.conf
# touch /etc/dhclient-script
# chmod +x /etc/dhclient-script
# /usr/local/sbin/dhclient fxp0
Listening on BPF/fxp0/00:90:27:4e:92:09/unattached
Sending on BPF/fxp0/00:90:27:4e:92:09/unattached
Sending on Socket/fallback/fallback-net
DHCPDISCOVER on fxp0 to 255.255.255.255 port 67 interval 22
DHCPOFFER from 192.168.3.1
DHCPREQUEST on fxp0 to 255.255.255.255 port 67
DHCPACK from 192.168.3.1
bound to 192.168.3.32 -- renewal in 3600 seconds.

在更复杂的情况下,就要指定更多的内容,例如当系统有多个网卡时,要指定dhclient应该从哪个子网中获得IP地址设置,就需要使用设置文件dhclient.conf。一般除非有多个局域网网络界面,都应该使用空设置文件,避免产生配置错误。以下为一个简单的dhclient.conf的例子,可以用于多网络界面的情况:

# Defaults
timeout 60;
reboot 10;

retry 60;
select-timeout 5;
initial-interval 2;

script "/etc/dhclient-script";

interface "fxp0" {
request subnet-mask, broadcast-address, routers, domain-name-servers,
domain-name, host-name;
require domain-name-servers;
}

这个设置文件主要用于重新定义一些参数,比较容易理解,更改也比较容易。

成功的手工执行dhclient之后,就可以考虑将其和系统启动文件相结合了。因为很多网络服务是依赖于网络配置的,应该在启动这些网络服务之前使用DHCP配置好TCP/IP。使用dhclient-script启动服务的想法虽然也能解决问题,然而这就不能使用系统的启动rc文件中的相关设置启动网络服务,而在这个dhclient-script 中重新启动,因此比较麻烦。更简便的做法是仅仅在dhclient-script中设置hostname,而让系统启动文件完成其他网络服务的启动。这样就要求将dhclient与系统rc文件结合起来。

#hostname="my.domain.name"
network_interfaces="fxp0 lo0" # List of network interfaces (lo0 is
loopback).
ifconfig_lo0="inet 127.0.0.1" # default loopback device configuration.
#ifconfig_fxp0="inet 192.168.3.12 netmask 255.255.255.0"
defaultrouter="NO" # Set to default gateway (or NO).

这样就需要更改rc.conf文件,更改一些设置语句。首先要注释hostname设置,而在dhclient.script中进行设置,也不必设置defaultrouter,它通过DHCP协议自动设置。同时要保证network_interfaces参数中,设置了要通过dhclient来获取IP地址的网络界面fxp0,以允许rc系统文件能启动该与该界面相关的设置文件,然而却必须注释设置该界面的参数ifconfig_fxp0,因为这个设置参数是用于设置静态IP地址的选项,因此要屏蔽它,而使用start_if.fxp0配置脚本来设置网络界面。

缺省情况下,不存在start_if.fxp0等start_if设置网络脚本,但是这些脚本在rc.network已经做好了设置,针对每个网络界面启动,而不需要在rc.conf中做特别设定。对于dhclient,可以创建一个简单的启动脚本start_if.fxp0为:

#! /bin/sh
/usr/local/sbin/dhclient fxp0

这样,dhclient就和系统启动文件结合起来了,在系统启动的时候会自动设置好TCP/IP,此后再启动相关的网络服务。此时需要注意的是删除原来可能在rc.local或者在/usr/local/etc/rc.d目录中的dhclient启动命令,以避免冲突。

在FreeBSD系统上不推荐使用动态IP地址,因为FreeBSD能提供大量有用的网络服务,都会与IP地址或域名有关,不适合使用动态IP地址。如果必须要作为DHCP客户以保持IP地址的统一管理,建议使用dhcpd针对硬件地址的设置方式,在DHCP服务器上为FreeBSD系统设定一个固定IP地址。

设置DHCP中转

当网络中存在多个子网的时候,由于客户计算机只能通过广播发送DHCP请求,这些请求一般不能跨越路由器。为了在DHCP服务器存在的子网之外的DHCP客户分配IP地址,可以设置路由器转发DHCP请求,即转发相应的UDP 端口67和68的广播数据包。但这样设置就增加了网络广播,不利于减少网络流量。

此外,还有另外一种方法来使得DHCP客户计算机能使用子网之外的DHCP服务器来分配IP地址。这就是使用 DHCP中转计算机来转发DHCP的请求。DHCP中转计算机能听取DHCP广播,由于它了解DHCP服务器的IP地址,因此能通过正常的IP数据包将原广播包转发到服务器中,然后再将服务器的回应信息回复客户机。这样DHCP客户机就以为本子网中也存在一个DHCP服务器。

在ISC-DHCP软件中,提供的中转程序为dhcrelay,这是一个简单的程序,不需要额外的设置。启动 dhcrelay的标准方式为使用命令行指定将DHCP服务请求中转到的目的DHCP服务器,由于DHCP中允许多个 DHCP服务器同时为客户提供地址,而不会产生冲突,就可以使用多个DHCP服务器进行中转。

# dhcrelay dhcpsrv1 dhcpsrv2

如果这台中转服务器为多网络界面计算机,那么dhcrelay将侦听所有网络界面的DHCP请求,有时不希望 dhcrelay中转某些界面上的请求,就可以设置dhcrelay侦听的网络界面,这需要指定-i参数。

# dhcrelay -i xl0 dhcpsrv1

提供备份的DHCP设置

在一个具备多个子网的大型网络中,提供冗余是一个非常重要的问题。由于DHCP协议中DHCP服务器负责分配 IP地址,一旦DHCP服务器出现故障,那么所有的客户就无法正确获得IP地址,从而不能访问网络。

但可以同时设置多个DHCP服务器来提供一个冗余能力。然而DHCP服务器本身是不提供备份能力的,不能互为备份。他们占用的IP地址资源也不能重叠,以免发生客户机IP地址冲突的现象。提供容错能力是通过分割可用的IP地址到不同的DHCP服务器上,通过多个DHCP服务器同时为一个网络服务,从而使得一个服务器发生故障还能正常执行操作。通常为了进一步增强可靠性,还可以将不同的DHCP服务器放置在不同子网中,互相使用中转提供服务。

例如在两个子网上各自有一个DHCP服务器,标准的做法可以不使用DHCP中转,各个子网上的服务器为各个子网服务就行了。然而为了达到容错的目的,可以互相为另一个子网提供服务,通过设置中转或路由器转发广播以达到互为服务的目的。

例如位于192.168.3.0网络上的srv1的配置可能为:

subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.10 192.168.3.199;
}
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.200 192.168.4.220;
}

位于192.168.4.0网络上的srv2的配置可能为:

subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.10 192.168.4.199;
}
subnet 192.168.3.0 netmask 255.255.255.0 {
range 192.168.3.200 192.168.3.220;
}

注意,上述设置都是设置样例,标准情况下还需分别指定各个option,用于设置IP地址及其相关设置。

可以看出两个服务器都能对两个网络上的客户机分配IP地址,而各自又有一个主要服务的网络。每个网络上的IP 地址主要放在本地的服务器上,但也有少部分地址放在另一个子网中的服务器上(地址资源不能冲突),这样提供了一定的容错能力。

实际的多子网网络中,并不必要每个子网都设置一个服务器,并使用另外的服务器备份,一般网络中有2-3个DH CP服务器就够用了。其他子网可以通过DHCP中转的方式,给该子网提供DHCP服务。

阅读全文

与把树莓派网络ip设置为dhcp相关的资料

热点内容
如何查看自家网络千兆还是百兆 浏览:709
装上手机卡没有网络怎么办 浏览:260
网络修复正常的为什么不能连网 浏览:439
重启路由器显示无网络 浏览:203
英国哪个运营商网络好 浏览:168
宽带网络恢复出厂设置了怎么办 浏览:731
第二季网络安全宣传周在哪里举行 浏览:354
怎么设置出现网络 浏览:465
怎样才能消除手机上的网络 浏览:892
挖宝与凶贼游戏网络异常怎么办 浏览:919
网络用语邦邦两拳什么意思 浏览:821
逆战网络波动异常啥意思 浏览:347
家里网络用无线ap好吗 浏览:425
测试网络通话软件 浏览:142
网络盒子哪个更清晰 浏览:277
xs什么网络意思 浏览:204
网络安全专业哪个大学牛 浏览:815
需要网络连接以在这台iphone上 浏览:56
自动网络营销系统平台 浏览:263
为什么wifi连尚网络不可用 浏览:841

友情链接