linux dhcp配置多vlan ip

timedatectl



yum install ethtool      # CentOS/RHEL系统
ethtool -i <interface_name> | grep "tagged"

1、安装dhcpd

yum install -y epel-release
yum install -y dhcp
yum install -y dhcp-server
systemctl stop firewalld
systemctl disable firewalld
systemctl start dhcpd
systemctl restart dhcpd

alias cp=cp
cp -rf /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
systemctl restart dhcpd

2、配置dhcpd

2.1、/etc/dhcp/dhcpd.conf入门

# /etc/dhcp/dhcpd.conf
#其中全局语句块和subnet语句块均可使配置生效,subnet语句块优先级高于全局语句块:
#全局语句块:
# option definitions common to all supported networks...
#指定获取主机域后缀:
option domain-name "michael.com";
#指定DNS,可选
option domain-name-servers 114.114.114.114, 8.8.8.8;
#ip的租期,单位:秒
default-lease-time 86400;    #默认是600s,客户端会在租期的一半也就是300s后进行续租,组曲太短会占用大量的网络带宽,建议改时间长一点。这里修改为86400s,一天。
#最大租期时间
max-lease-time 100000;

log-facility local7;

#subnet配置 #指定网段
subnet 192.168.1.0 netmask 255.255.255.0 {
    #指定分配的ip范围,可以跳过一些地址
    range 192.168.1.10 192.168.1.100;
    range 192.168.1.150 192.168.1.200;
    #指定网关
    option routers 192.168.1.1;
}

#为一个mac地址分配一个固定的ip,效果等同于静态获取;
#为00:0c:29:52:ab:a2这个mac地址固定的分配192.168.1.190这个地址;
host michelle {
  hardware ethernet 00:0c:29:52:ab:a2;
  fixed-address 192.168.1.190;
}

dhcpd配置文件语法检查功能

systemctl status dhcpd.service
journalctl -xeu dhcpd.service

dhcpd -t -cf /etc/dhcp/dhcpd.conf

2.2、/etc/dhcp/dhcpd.conf

/etc/dhcp/dhcpd.conf配置文件中,存在许多不同的配置项,用于定义DHCP服务器的行为和属性。以下是一些常见的配置项及其含义:

  1. ddns-update-style:指定动态DNS更新的方式。可以设置为nonead-hocinterim。默认值为none,表示禁用动态DNS更新。
  1. option domain-name:设置域名选项,指定DHCP客户端所属的域名。
  1. option domain-name-servers:设置DNS服务器的IP地址列表,用于DHCP客户端的DNS解析。
  1. default-lease-time:指定默认的租约时间,即DHCP客户端获取到IP地址的有效期,以秒为单位。
  1. max-lease-time:指定最大的租约时间,即DHCP客户端可以使用IP地址的最长时间,以秒为单位。
  1. subnet:定义子网配置块,指定子网的IP地址范围、子网掩码和其他相关选项。
subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.100 192.168.1.200;
	option routers 192.168.1.1;
	option domain-name-servers 8.8.8.8, 8.8.4.4;
}
  1. range:在子网配置块内定义IP地址范围。指定DHCP服务器可以分配给客户端的IP地址范围。
  1. option routers:设置默认网关(路由器)的IP地址,用于将数据包从DHCP客户端转发到其他网络。
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
  1. option subnet-mask:设置子网掩码的值,用于指定DHCP客户端的网络子网。
  1. option broadcast-address:设置广播地址,用于向DHCP客户端广播消息。
  1. host:用于定义静态分配的主机IP地址。通过指定主机的MAC地址和相应的IP地址,使特定的设备始终获取相同的IP。
host pc1 {
	hardware ethernet 00:11:22:33:44:55;
	fixed-address 192.168.1.66;
}
  1. group:用于设置一组主机的共享选项。
group {
	option domain-name-servers 8.8.8.8, 8.8.4.4;
	option routers 192.168.1.1;
	host pc1 {
		hardware ethernet 00:11:22:33:44:55;
	}
	host pc2 {
		hardware ethernet 66:77:88:99:AA:BB;
	}
}
  1. 以上只是一些常见的配置项,还有许多其他可以在dhcpd.conf文件中进行配置的选项,以满足不同的需求。
  1. shared-network:用于定义共享网络中的多个子网。例如:

    shared-network mynet {
        subnet 192.168.1.0 netmask 255.255.255.0 {
            range 192.168.1.100 192.168.1.200;
            option routers 192.168.1.1;
        }
        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;
        }
    }
    
  2. allowdeny:用于设置对特定主机或子网的访问控制。例如:

    subnet 192.168.1.0 netmask 255.255.255.0 {
        range 192.168.1.100 192.168.1.200;
        option routers 192.168.1.1;
        deny unknown-clients;
        allow known-clients;
    }
    

    上述配置将拒绝未知客户端,并允许已知客户端分配IP地址。

  3. include:用于包含其他配置文件。例如:

    include "/etc/dhcp/myoptions.conf";
    

    上述配置将包含/etc/dhcp/myoptions.conf文件中的所有配置选项。

除了上述常见选项外,dhcpd.conf文件还提供了其他高级配置选项,例如动态DNS更新、租约时间、DDNS协议等。您可以参考dhcpd.conf文件的注释和手册文档以获取更详细的配置信息。

请注意,在修改dhcpd.conf文件后,需要重新加载或重启DHCP服务器以使配置生效。

2.3 DHCP服务租约文件dhcpd.leases各项含义

成功运行dhcpd服务后,就可以分配ip地址给客户端,这些租用信息都可以通过查看租约文件/var/lib/dhcpd/dhcpd.leases来查看每个ip地址的租约记录。

lease ip-address {
	statements
}

每个租约声明都包含已租给客户端的单个ip地址。大括号内的语句定义了租约的期限及租约分配对象。
starts date; 租约的开始时间
ends date; 租约的结束时间
tstp date; The tstpstatement is present if the failover protocol is being used, and indicates what time the peer has been told the lease expires.
tsfp date; The tsfpstatement is also present if the failover protocol is being used, and indicates the lease expiry time that the peer has acknowledged.
atsfp date; The atsfpstatement is the actual time sent from the failover partner.
cltt date; The clttstatement is the client’s last transaction time.
hardware hardware-type mac-address; 使用ip的客户端网络接口的mac地址
uid client-identifier; 记录用于获取租约的客户端标识符。
client-hostname hostname;客户端发送其主机名。
binding state state;声明租约的绑定状态,可能为活动(active)、可用(free)、放弃(abandoned)。
next binding state state;当前状态到期时租约将移动到的状态。当前状态过期的时间在ends语句中指定。
rewind binding state state;This statement is part of an optimization for use with failover. This helps a server rewind a lease to the state most recently transmitted to its peer.
option agent.circuit-id string; 记录中继代理发送的circuit ID
option age.remote-id string; 记录中继代理发送的remote ID
These statements are used to record the circuit ID and remote ID options sent by the relay agent, if the relay agent uses the relay agent information option. This allows these options to be used consistently in conditional evaluations even when the client is contacting the server directly rather than through its relay agent.
The vendor-class-identifier variable;The server retains the client-supplied Vendor Class Identifier option for informational purposes, and to render them in DHCPLEASEQUERY responses.
bootp;
reserved;If present, they indicate that the BOOTP and RESERVED failover flags (respectively) should be set. BOOTP and RESERVED dynamic leases are treated differently than normal dynamic leases, as they may only be used by the client to which they are currently allocated.

DHCP服务器使用 dhcpd.leases 文件记录当前租约。该文件存储分配给 DHCP 客户端的租约信息,其中还包括客户端的 MAC 地址、IP 地址、租约开始和结束时间等信息。由于 dhcpd.leases 文件的格式采用文本格式,因此可以使用 Java 中的文件读取操作进行读取,并将文件中每行的信息解析为相应的租约参数。以下是 dhcpd.leases 文件中可能存在的参数:

  • lease: 分配的租约 IP 地址
  • starts: 分配租约开始时间
  • ends: 分配租约结束时间
  • tstp: 分配租约到期时间
  • cltt: 客户机上一次引导开始时间
  • binding: 分配租约的 MAC 地址信息
  • hardware: 客户机的 MAC 地址
  • uid: 客户端唯一标识符
  • client-hostname: 客户端主机名
  • next-server: DHCP 服务器名称或地址
  • filename: 客户端引导文件名
  • server-identifier: DHCP 服务器标识符
  • dynamic: 是否为动态租赁
  • option dhcp-client-identifier: 客户端标识符
  • option dhcp-lease-time: 租期时间
  • option dhcp-message-type: DHCP 消息类型
  • option dhcp-server-identifier: DHCP 服务器标识符
  • option dhcp-renewal-time: 自动续订时间
  • option dhcp-rebinding-time: 自动重新绑定时间

这些标签的含义可能在不同版本的 dhcpd.leases 文件中略有不同。如果您需要解析 dhcpd.leases 文件,请根据文件中存储的参数列表进行分析。

3、linux中vlan配置

https://support.huawei.com/enterprise/zh/doc/EDOC1100088136

3.1、先列出模块,没有8021q模块需要加载

在CentOS 7 /RHEL 7 / CentOS 8 /RHEL 8系统上使用VLAN标记接口,必须加载内核模块8021q。

lsmod | grep -i 8021q

3.2、加载内核模块

`modprobe`命令用于加载内核模块。
`--first-time`仅加载尚未加载的模块,而已经加载的模块将被忽略。
# 加载内核模块
modprobe --first-time 8021q

# 使用modinfo命令列出8021q的信息
modinfo 8021q

3.3、ip命令临时配置vlan

3.3.1、创建vlan 200和vlan 300

ip link add link ens32 name ens32.200 type vlan id 200
ip link add link ens32 name ens32.300 type vlan id 300

3.3.2、启用vlan 200 和vlan 300 并配置ip

ip link set ens32.200 up
ip link set ens32.300 up
ip address add 172.168.200.51/24 dev ens32.200
ip address add 172.168.300.51/24 dev ens32.300

3.3.3、reboot则vlan配置失效

reboot
ifconfig
ip address

可以看到vlan200, 300的信息都消失。

3.4、配置文件永久配置vlan

3.4.1、修改ifcfg-ens32的配置文件

vim /etc/sysconfig/network-scripts/ifcfg-ens32
====================
TYPE=Ethernet
BOOTPROTO=none
DEVICE=ens32
ONBOOT=yes

3.4.2、创建文件ifcfg-ens32.200、配置 vlan 200

vim /etc/sysconfig/network-scripts/ifcfg-ens32.200
====================
DEVICE=ens32.200
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.168.200.51
PREFIX=24
NETWORK=172.168.200.0
VLAN=yes

3.4.3、创建文件ifcfg-ens32.300、配置 vlan 300

vim /etc/sysconfig/network-scripts/ifcfg-ens32.300
====================
DEVICE=ens32.300
BOOTPROTO=none
ONBOOT=yes
IPADDR=172.168.300.51
PREFIX=24
NETWORK=172.168.300.0
VLAN=yes

3.4.4、reboot则vlan配置仍有效

reboot
ifconfig
ip address

可以看到vlan200, 300的信息都没有消失。

3.5、nmcli命令永久配置vlan

nmcli c add type vlan con-name <连接名称> ifname <VLAN接口名称> dev <物理接口名称> id <VLAN_ID>

1、配置vlan
nmcli connection add type vlan \
con-name ens256-vlan10 \
ifname ens256-vlan10 \
dev ens256 \
id 10 \
ipv4.addresses 192.168.10.2/24 \
ipv4.gateway 192.168.10.254 \
ipv4.dns '8.8.8.8,114.114.114.114' \
ipv4.method manual

2、停用连接
nmcli connection down ens256-vlan10

3、删除连接
nmcli connection delete ens256-vlan10

3、Linux上配置多个VLAN ID的DHCP

要在Linux上配置多个VLAN ID的DHCP,您可以按照以下步骤进行操作:

  1. 确保您的Linux系统已经安装并正确配置了DHCP服务器软件,比如ISC DHCP服务器(dhcpd)。

  2. 编辑DHCP服务器的配置文件。通常情况下,该文件位于/etc/dhcp/dhcpd.conf。使用文本编辑器打开该文件。

  3. 在配置文件中,定义每个VLAN的DHCP池。根据您的需求,可以为每个VLAN定义一个独立的子网和IP地址范围。例如,假设有两个VLAN,VLAN10和VLAN20,可以按照以下方式定义它们的DHCP池:

# VLAN10
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 domain-name "vlan10.example.com";
}

# VLAN20
subnet 192.168.20.0 netmask 255.255.255.0 {
	range 192.168.20.100 192.168.20.200;
	option routers 192.168.20.1;
	option domain-name "vlan20.example.com";
}

您可以根据需要进行调整,并根据实际情况添加更多的子网和DHCP池。

  1. 在配置文件中,为每个VLAN定义一个DHCP预定义主机。这允许您为特定的MAC地址分配静态IP。例如:
host host1 {
	hardware ethernet 00:11:22:33:44:55;
	fixed-address 192.168.10.50;
}

host host2 {
	hardware ethernet AA:BB:CC:DD:EE:FF;
	fixed-address 192.168.20.50;
}

您可以根据需要定义更多的静态主机。

  1. 保存并关闭配置文件。

  2. 检查DHCP服务器的其他配置,例如监听接口(如果有多个网络接口)和日志设置,并根据需要进行调整。

  3. 启动或重新加载DHCP服务器以使用新的配置。具体的命令可能因您所使用的Linux发行版而有所不同。通常,您可以使用以下命令重新加载配置:

sudo systemctl reload dhcpd

如果您使用的是其他的DHCP服务器软件,请参考相应的文档以了解正确的重新加载配置的步骤。

完成上述步骤后,您的DHCP服务器将根据所定义的VLAN ID提供IP配置。确保客户端设备的网络配置与所分配的子网和VLAN ID 匹配。

centos dhcp多个subnet,以及客户端选择指定subnet

要在CentOS上配置多个子网的DHCP服务器,并使客户端能够选择指定的子网,您可以按照以下步骤进行操作:

  1. 打开DHCP服务器的配置文件/etc/dhcp/dhcpd.conf

  2. 在配置文件中添加多个subnet块,每个块表示一个子网,并提供相应的IP地址范围、配置设置和选项。例如:

subnet 172.16.0.0 netmask 255.255.0.0 {
  range 172.16.0.2 172.16.0.240;
  option domain-name-servers 172.16.1.120, 114.114.114.114;
  option routers 172.16.1.120;
  option broadcast-address 172.16.255.255;
  default-lease-time 600;
  max-lease-time 7200;
}


subnet 192.168.1.0 netmask 255.255.255.0 {
	range 192.168.1.100 192.168.1.200;
	option routers 192.168.1.1;
	option domain-name "example1.com";
}

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 domain-name "example2.com";
}

subnet 192.168.3.0 netmask 255.255.255.0 {
	range 192.168.3.100 192.168.3.200;
	option routers 192.168.3.1;
	option domain-name "example3.com";
}

您可以根据需要添加更多的子网和相关配置。

  1. 保存并关闭文件。

  2. 启动或重新加载DHCP服务器以使用新的配置。执行以下命令:

sudo systemctl restart dhcpd
  1. 客户端选择指定子网的方法可以通过两种方式进行配置:

    a. 子网选择器(Subnet Selector)选项:在DHCP客户端上配置子网选择器选项,以指示客户端应该从哪个子网获取配置。

    • 打开DHCP客户端的配置文件/etc/dhcp/dhclient.conf

    • 添加以下行,其中x.x.x.x是您希望选择的子网所在的服务器IP地址。

option rfc3442-classless-static-routes code 121 = string;
request subnet-mask, broadcast-address, routers, domain-name-servers, rfc3442-classless-static-routes;
send dhcp-class-identifier "subnet-select-01";
send dhcp-client-identifier "01:02:03";
send rfc3442-classless-static-routes 1.0.0.0 192.168.1.x, 2.0.0.0 192.168.2.x, 3.0.0.0 192.168.3.x;
  - 在`rfc3442-classless-static-routes`行中,使用具体的CIDR格式子网地址替换`1.0.0.0`、`2.0.0.0`和`3.0.0.0`。

  - 保存并关闭文件。

  - 重启DHCP客户端以使用新的配置。

b. 使用虚拟局域网标识(VLAN ID):如果您的网络已经使用了虚拟局域网(VLAN)来分隔不同的子网,并且DHCP服务器已经针对每个VLAN进行了配置,那么客户端可以通过连接到相应VLAN的接口来选择特定的子网。

  - 确保客户端的网络接口已经正确配置为相应的VLAN。

  - 客户端将通过与特定子网关联的VLAN接口来获取DHCP配置,而不需要特别指定子网。

无论是使用子网选择器选项还是基于VLAN ID,重要的是确保您的DHCP服务器已正确配置,以提供适用于每个子网的IP地址池和相关配置。客户端和DHCP服务器之间的通信和协商过程将确保客户端获得正确的配置。

客户端/etc/dhcp/dhclient.conf配置详解

/etc/dhcp/dhclient.conf文件是DHCP客户端的配置文件,用于指定客户端与DHCP服务器进行通信时使用的配置选项。以下是对dhclient.conf文件的常见配置选项的详细解释:

  1. timeout:设置DHCP客户端等待DHCP服务器响应的超时时间(以秒为单位)。例如:

    timeout 10;
    
  2. retry:设置DHCP客户端在未收到DHCP服务器响应时进行重试的次数。例如:

    retry 5;
    
  3. request:指定客户端请求从DHCP服务器获取的选项。一般包括 IP 地址、子网掩码、网关地址、DNS服务器地址等。例如:

    request subnet-mask, routers, domain-name-servers;
    
  4. send:指定客户端在DHCP通信中发送的选项。例如:

    send dhcp-client-identifier "01:02:03";
    
  5. prepend:在请求的选项值前添加其他选项。例如:

    prepend domain-name-servers 8.8.8.8, 8.8.4.4;
    

    上述配置将在请求的DNS服务器地址之前添加Google的公共DNS服务器。

  6. supersede:覆盖DHCP服务器提供的选项值。例如:

    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
    

    上述配置将覆盖DHCP服务器提供的DNS服务器地址。

  7. ignore:忽略来自DHCP服务器的指定选项。例如:

    ignore domain-name-servers;
    

    上述配置将忽略DHCP服务器提供的DNS服务器地址。

  8. script:指定在从DHCP服务器获取配置后执行的脚本。例如:

    script "/path/to/script.sh";
    

    上述配置将在获取到DHCP配置后执行/path/to/script.sh脚本。

  9. alias:为客户端接口指定别名。例如:

    alias {
        interface "eth0";
        fixed-address 192.168.1.50;
        option subnet-mask 255.255.255.0;
    }
    

    上述配置将为eth0接口设置别名,并使用指定的IP地址和子网掩码。

请注意,在修改dhclient.conf文件后,需要重新启动或重启DHCP客户端以使配置生效。

启动路由转发功能

enable ipforwarding

启动dhcp中继转发功能

enable bootprelay

指定dhcp服务器地址

config bootprelay add 172.16.1.1

VVVVVVVVVVVVVVVVVLAN

华为文档 IEEE 802.1Q封装的VLAN数据帧格式

在某些场景中,我们希望在Linux服务器(CentOS / RHEL)上的同一网卡分配来自不同VLAN的多个ip。这可以通过启用VLAN标记接口来实现,但要实现这一点,首先必须确保交换机上添加多个vlan。

假设我们有一个Linux服务器,其中有两个以太网卡(ens33和ens38),第一个网卡(ens33)用于数据流量,第二个网卡(ens38)用于控制/管理流量。对于数据流,将使用多个vlan(将在数据流网卡上分配来自不同vlan的多个ip)。

假设从交换机连接到服务器数据流量网卡的端口被配置为Trunk,通过映射多个vlan到它。下面是映射到数据流量网卡的vlan:
VLAN ID (200),172.168.10.0/24
VLAN ID (300),172.168.20.0/24

哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈

在 Linux 中,配置 VLAN 需要通过修改网络接口和创建虚拟网络接口来实现。下面是具体步骤:

  1. 首先确认网卡是否支持 VLAN 功能。可以通过执行命令 ethtool -i <interface_name> 来查看。

  2. 如果网卡支持 VLAN,则需要安装 vlan 工具,可以通过执行以下命令进行安装:

sudo apt-get update
sudo apt-get install vlan
  1. 创建一个具有特定 VLAN 号的虚拟网络接口。例如,创建 VLAN 100:
sudo vconfig add <interface_name> 100

此命令将会在系统中创建一个新的虚拟网络接口,名称为 <interface_name>.100,其中<interface_name> 为原本接口的名称。

  1. 将 VLAN 接口配置为静态或动态 IP。

如果您需要将 VLAN 100 配置为静态 IP,请编辑位于 /etc/network/interfaces 的网络配置文件,并添加以下行:

auto <interface_name>.100
iface <interface_name>.100 inet static
address <ip_address>
netmask <netmask>
gateway <gateway>

如果您需要将 VLAN 100 配置为动态 IP,请将 inet static 更改为 inet dhcp。如果有必要,为 VLAN 接口设置 DNS 信息,添加以下行:

dns-nameservers <dns_server_ip>
  1. 最后,使用以下命令来激活接口并验证 VLAN 配置是否成功:
sudo ifup <interface_name>.100

现在您已经成功配置了 VLAN,可以使用 <interface_name>.100 作为具有 VLAN 100 标签的新网络接口。

linux配置vlan后网络不通

如果在Linux上配置了VLAN,但网络不通,这可能是由于多种原因导致的。以下是一些可能的原因和解决方法:
1、检查物理连接:首先,确保VLAN支持的物理网络连接正常。确保网络电缆连接正确,交换机端口配置正确,以及VLAN ID 和端口配置匹配。
2、检查VLAN配置:确保你正确配置了VLAN。你可以使用ifconfig或ip命令来验证VLAN接口的配置。例如:

ip link show

确保VLAN接口的状态是 UP,并且VLAN ID 和物理接口匹配。

3、检查路由表:确保你的系统具有正确的路由配置,以便能够与其他VLAN通信。你可以使用ip route命令来查看路由表。
4、检查防火墙规则:如果你在系统上运行防火墙(如iptables),确保没有防火墙规则阻止VLAN流量。检查防火墙规则,确保允许VLAN之间的通信。

5、检查VLAN支持:确保你的网络适配器和内核支持802.1Q VLAN标记。你可以使用以下命令来检查内核模块是否加载:

lsmod | grep 8021q
如果没有加载,你可以使用modprobe命令加载它:
modprobe 8021q

6、检查交换机配置:如果你使用了交换机来管理VLAN,确保交换机上的VLAN配置正确。检查交换机端口配置和VLAN trunking 配置,以确保它们与Linux主机的配置匹配。

7、检查VLAN标记:确保你的设备上的VLAN标记正确。如果你在不同设备之间传输VLAN流量,确保每个设备都正确地配置了VLAN标记。
8、日志和故障排除:查看系统日志,例如/var/log/syslog或/var/log/messages,以查找与VLAN相关的错误消息,这有助于进一步诊断问题。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值