하나의 네트워크 카드를 사용하여 centos7의 "dhcp-server-identifier"를 기반으로 다양한 서브넷을 제공하는 방법

하나의 네트워크 카드를 사용하여 centos7의 "dhcp-server-identifier"를 기반으로 다양한 서브넷을 제공하는 방법

인터넷에 접속할 수 없는 격리된 시스템이 있습니다.

이 서버 중 하나를 사용하여 dhcp 서버를 실행하고 클라이언트가 원하는 다른 서브넷에 다른 IP를 제공하고 싶습니다.

클라이언트에서 서버, subnet2로 요청을 보낼 수 있지만 서버는 항상 subnet1에서 IP를 반환합니다.

아래는 내 설정입니다.

/etc/dhcp/dhcpd.conf

subnet 172.16.50.0 netmask 255.255.255.0 {
  range 172.16.50.100 172.16.50.200;
  option subnet-mask 255.255.255.0;
  option routers 172.16.50.254;
  option broadcast-address 172.16.50.255;
  option ip-forwarding off;
  option domain-name-servers 8.8.8.8;
  if exists user-class and option user-class = "iPXE" {
    filename "bootstrap.ipxe";
  } else {
    filename "undionly.kpxe";
  }
  next-server   172.16.50.31;
}
subnet 172.16.51.0 netmask 255.255.255.0 {
  range 172.16.51.100 172.16.51.200;
  option subnet-mask 255.255.255.0;
  option routers 172.16.51.254;
  option broadcast-address 172.16.51.255;
  option ip-forwarding off;
  option domain-name-servers 8.8.8.8;
  if exists user-class and option user-class = "iPXE" {
    filename "bootstrap.ipxe";
  } else {
    filename "undionly.kpxe";
  }
  next-server   172.16.51.31;
}

IP 설정

$ sudo modprobe dummy
$ sudo ip link set name eth10 dev dummy0
$ sudo ip addr add 172.16.51.31/24 brd + dev eth10 label eth10:0

$ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp1s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 04:7d:7b:d8:bb:6a brd ff:ff:ff:ff:ff:ff
    inet 172.16.50.31/24 brd 172.16.50.255 scope global enp1s0f0
       valid_lft forever preferred_lft forever
    inet6 fe80::67d:7bff:fed8:bb6a/64 scope link
       valid_lft forever preferred_lft forever
3: enp1s0f1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN qlen 1000
    link/ether 04:7d:7b:d8:bb:6b brd ff:ff:ff:ff:ff:ff
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN
    link/ether 52:54:00:36:03:d7 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500
    link/ether 52:54:00:36:03:d7 brd ff:ff:ff:ff:ff:ff
7: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN
    link/ether d2:b8:2e:44:a5:2f brd ff:ff:ff:ff:ff:ff
    inet 172.16.51.31/24 brd 172.16.51.255 scope global eth10:0
       valid_lft forever preferred_lft forever

$ifconfig

enp1s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.50.31  netmask 255.255.255.0  broadcast 172.16.50.255
        inet6 fe80::67d:7bff:fed8:bb6a  prefixlen 64  scopeid 0x20<link>
        ether 04:7d:7b:d8:bb:6a  txqueuelen 1000  (Ethernet)
        RX packets 5288228  bytes 1902558434 (1.7 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6310647  bytes 6023578728 (5.6 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xdfe20000-dfe3ffff

enp1s0f1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether 04:7d:7b:d8:bb:6b  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device memory 0xdfe00000-dfe1ffff

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 6164718  bytes 2009821769 (1.8 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6164718  bytes 2009821769 (1.8 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:36:03:d7  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

"클라이언트에서"/etc/dhcp/dhclient.conf

send dhcp-server-identifier 172.16.51.31;

DHCP 클라이언트 실행

$ dhclient -r -v ens20f0
    Listening on LPF/ens20f0/54:ab:3a:3d:2c:7a
    Sending on   LPF/ens20f0/54:ab:3a:3d:2c:7a
    Sending on   Socket/fallback
    DHCPRELEASE on ens20f0 to 172.16.50.31 port 67 (xid=0x41973da)

$ dhclient -s 172.16.51.31 -v ens20f0
    Listening on LPF/ens20f0/54:ab:3a:3d:2c:7a
    Sending on   LPF/ens20f0/54:ab:3a:3d:2c:7a
    Sending on   Socket/fallback
    DHCPDISCOVER on ens20f0 to 172.16.51.31 port 67 interval 7 (xid=0x2c4dfe6c)
    DHCPREQUEST on ens20f0 to 172.16.51.31 port 67 (xid=0x2c4dfe6c)
    DHCPOFFER from 172.16.50.31
    DHCPPACK from 172.16.50.31 (xid=0x2c4dfe6c)
    bound to 172.16.50.116 -- renewal in 20324 seconds.

172.16.50.31로 요청을 보냅니다. 그러나 나는 172.16.50.0/24의 IP만을 얻었습니다.

온라인에서 읽은 해결책이 있습니다.https://ubuntuforums.org/showthread.php?t=2186879

그러나 이것은 centos가 아닌 Ubuntu에 있습니다. 차근차근 할 수가 없어요.

CentOS 7의 다른 서브넷에 IP를 제공할 수 있는 방법이 있습니까?

답변1

나는 해결책을 스스로 찾았습니다.

/etc/sysconfig/network-script/에 가상 인터페이스를 영구 인터페이스로 추가하면 서버가 단일 실제 인터페이스를 통해 여러 서브넷을 제공할 수 있습니다.

인터페이스가 임시 인터페이스(예: ifconfig eth0:1 172.16.52.0/24)로 추가되면 서버는 다중 서브넷 서비스를 제공할 수 없습니다.

관련 정보