dhcp: Only send client identifier if identity_lease is enabled

The client identifier serves as unique identifier just like a unique MAC
address would, so even with identity_leases disabled some DHCP servers
might assign unique leases per identity.
This commit is contained in:
Tobias Brunner 2018-04-11 10:51:01 +02:00
parent 0e5b94d038
commit 7b660944b6
5 changed files with 10 additions and 5 deletions

View File

@ -9,7 +9,8 @@ charon.plugins.dhcp.force_server_address = no
192.168.0.255) as server address might work.
charon.plugins.dhcp.identity_lease = no
Derive user-defined MAC address from hash of IKE identity.
Derive user-defined MAC address from hash of IKE identity and send client
identity DHCP option.
charon.plugins.dhcp.server = 255.255.255.255
DHCP server unicast or broadcast IP address.

View File

@ -268,7 +268,8 @@ static int prepare_dhcp(private_dhcp_socket_t *this,
remaining -= sizeof(dhcp_option_t) + option->len;
}
if (remaining >= sizeof(dhcp_option_t) + 2)
if (this->identity_lease &&
remaining >= sizeof(dhcp_option_t) + 2)
{
option = (dhcp_option_t*)&dhcp->options[optlen];
option->type = DHCP_CLIENT_ID;

View File

@ -1,8 +1,9 @@
moon::ipsec stop
carol::ipsec stop
dave::ipsec stop
venus::cat /var/state/dhcp/dhcpd.leases
venus::cat /var/lib/dhcp/dhcpd.leases
venus::service isc-dhcp-server stop 2> /dev/null
venus::rm /var/lib/dhcp/dhcpd.leases*; touch /var/lib/dhcp/dhcpd.leases
moon::iptables-restore < /etc/iptables.flush
carol::iptables-restore < /etc/iptables.flush
dave::iptables-restore < /etc/iptables.flush

View File

@ -6,6 +6,7 @@ charon {
plugins {
dhcp {
server = 10.1.255.255
identity_lease = yes
}
}
}

View File

@ -3,8 +3,9 @@ dave::swanctl --terminate --ike home
carol::systemctl stop strongswan-swanctl
dave::systemctl stop strongswan-swanctl
moon::systemctl stop strongswan-swanctl
venus::cat /var/state/dhcp/dhcpd.leases
venus::server isc-dhcp-server stop 2> /dev/null
venus::cat /var/lib/dhcp/dhcpd.leases
venus::service isc-dhcp-server stop 2> /dev/null
venus::rm /var/lib/dhcp/dhcpd.leases*; touch /var/lib/dhcp/dhcpd.leases
moon::iptables-restore < /etc/iptables.flush
carol::iptables-restore < /etc/iptables.flush
dave::iptables-restore < /etc/iptables.flush