[Bug 1791108] Re: open-iscsi uses domainsearch instead of search for /etc/resolv.conf
Victor Tapia
victor.tapia at canonical.com
Wed Oct 3 16:14:54 UTC 2018
#VERIFICATION-BIONIC
- Before the update
ubuntu at iscsi-bionic:~$ dpkg -l | grep open-iscsi
ii open-iscsi 2.0.874-5ubuntu2.2 amd64 iSCSI initiator tools
ubuntu at iscsi-bionic:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 192.168.122.1
domainsearch example.com
ubuntu at iscsi-bionic:~$ sudo strace ping -c1 www 2>&1 | grep www
execve("/bin/ping", ["ping", "-c1", "www"], 0x7ffeb4aecd70 /* 14 vars */) = 0
sendmmsg(5, [{msg_hdr={msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\300\17\1\0\0\1\0\0\0\0\0\0\3www\0\0\1\0\1", iov_len=21}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_TRUNC|MSG_DONTWAIT|MSG_EOR|MSG_WAITALL|MSG_CONFIRM|MSG_RST|MSG_MORE|MSG_BATCH|MSG_ZEROCOPY|MSG_FASTOPEN|0xb420000}, msg_len=21}, {msg_hdr={msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\31\1\0\0\1\0\0\0\0\0\0\3www\0\0\34\0\1", iov_len=21}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CTRUNC|MSG_FIN|MSG_SYN|MSG_CONFIRM|MSG_RST|MSG_MORE|MSG_BATCH|MSG_ZEROCOPY|MSG_FASTOPEN|0xb420010}, msg_len=21}], 2, MSG_NOSIGNAL) = 2
recvfrom(5, "\300\17\201\203\0\1\0\0\0\0\0\0\3www\0\0\1\0\1", 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [28->16]) = 21
recvfrom(5, "\0\31\201\203\0\1\0\0\0\1\0\0\3www\0\0\34\0\1\0\0\6\0\1\0\0\"L\0@"..., 65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [28->16]) = 96
write(2, "ping: www: Name or service not k"..., 37ping: www: Name or service not known
- After the update
ubuntu at iscsi-bionic:~$ dpkg -l | grep open-iscsi
ii open-iscsi 2.0.874-5ubuntu2.3 amd64 iSCSI initiator tools
ubuntu at iscsi-bionic:~$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 192.168.122.1
search example.com
ubuntu at iscsi-bionic:~$ sudo strace ping -c1 www 2>&1 | grep www
execve("/bin/ping", ["ping", "-c1", "www"], 0x7ffea5cd0390 /* 14 vars */) = 0
sendmmsg(5, [{msg_hdr={msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\262\224\1\0\0\1\0\0\0\0\0\0\3www\7example\3com\0\0\1\0"..., iov_len=33}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_TRUNC|MSG_DONTWAIT|MSG_EOR|MSG_WAITALL|MSG_CONFIRM|MSG_ERRQUEUE|MSG_NOSIGNAL|MSG_MORE|MSG_BATCH|MSG_ZEROCOPY|MSG_CMSG_CLOEXEC|0x1b480000}, msg_len=33}, {msg_hdr={msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\226\235\1\0\0\1\0\0\0\0\0\0\3www\7example\3com\0\0\34\0"..., iov_len=33}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CTRUNC|MSG_FIN|MSG_SYN|MSG_CONFIRM|MSG_ERRQUEUE|MSG_NOSIGNAL|MSG_MORE|MSG_BATCH|MSG_ZEROCOPY|MSG_CMSG_CLOEXEC|0x1b480010}, msg_len=33}], 2, MSG_NOSIGNAL) = 2
recvfrom(5, "\262\224\201\200\0\1\0\1\0\0\0\0\3www\7example\3com\0\0\1\0"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [28->16]) = 49
recvfrom(5, "\226\235\201\200\0\1\0\1\0\2\0\4\3www\7example\3com\0\0\34\0"..., 65536, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [28->16]) = 197
write(1, "PING www.example.com (93.184.216"..., 132PING www.example.com (93.184.216.34) 56(84) bytes of data.
write(1, "--- www.example.com ping statist"..., 114--- www.example.com ping statistics ---
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to open-iscsi in Ubuntu.
https://bugs.launchpad.net/bugs/1791108
Title:
open-iscsi uses domainsearch instead of search for /etc/resolv.conf
Status in open-iscsi package in Ubuntu:
Fix Released
Status in open-iscsi source package in Xenial:
Fix Committed
Status in open-iscsi source package in Bionic:
Fix Committed
Status in open-iscsi source package in Cosmic:
Fix Released
Bug description:
[Impact]
* open-iscsi is adding "domainsearch", a non-existent configuration
option, instead of "search" in /etc/resolv.conf. As a result, the
search list is ignored in the clients.
[Test case]
* Install an ubuntu machine that uses iscsi as root, and does not use systemd-resolvd.
* Prepare the dhcp server to provide the search list to its clients. For instance, in dnsmasq:
dhcp-option=option:domain-search,canonical.com
* Boot the machine and check the content of /etc/resolv.conf
- if domainsearch is present, the search list will be ignored:
root at iscsi-xenial:/home/ubuntu# ping -c1 golem
ping: unknown host golem
root at iscsi-xenial:/home/ubuntu# strace ping -c1 golem 2>&1 | grep golem
execve("/bin/ping", ["ping", "-c1", "golem"], [/* 19 vars */]) = 0
sendto(4, "_(\1\0\0\1\0\0\0\0\0\0\5golem\0\0\1\0\1", 23, MSG_NOSIGNAL, NULL, 0) = 23
recvfrom(4, "_(\201\203\0\1\0\0\0\0\0\0\5golem\0\0\1\0\1", 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [16]) = 23
write(2, "ping: unknown host golem\n", 25ping: unknown host golem
- if search is present, the search list will be used:
root at iscsi-xenial:/home/ubuntu# ping -c1 golem
PING golem.canonical.com (91.189.89.199) 56(84) bytes of data.
64 bytes from golem.canonical.com (91.189.89.199): icmp_seq=1 ttl=57 time=63.7 ms
--- golem.canonical.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 63.735/63.735/63.735/0.000 ms
root at iscsi-xenial:/home/ubuntu# strace ping -c1 golem 2>&1 | grep golem
execve("/bin/ping", ["ping", "-c1", "golem"], [/* 19 vars */]) = 0
sendto(4, "\1\\\1\0\0\1\0\0\0\0\0\0\5golem\tcanonical\3com"..., 37, MSG_NOSIGNAL, NULL, 0) = 37
recvfrom(4, "\1\\\201\200\0\1\0\1\0\0\0\0\5golem\tcanonical\3com"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.122.1")}, [16]) = 53
write(1, "PING golem.canonical.com (91.189"..., 145PING golem.canonical.com (91.189.89.199) 56(84) bytes of data.
64 bytes from golem.canonical.com (91.189.89.199): icmp_seq=1 ttl=57 time=63.5 ms
write(1, "--- golem.canonical.com ping sta"..., 157--- golem.canonical.com ping statistics ---
[Regression potential]
* The change is minor (a string replacement) and it's currently not working.
* Any possible regression would involve continuing to break DNS resolution.
[Other info]
* resolv.conf man page: http://man7.org/linux/man-
pages/man5/resolv.conf.5.html
[Original description]
Having an interface file such as /run/net-eno2.conf with the following
content:
DEVICE='eno2'
PROTO='dhcp'
IPV4ADDR='10.10.10.10'
IPV4BROADCAST='10.10.10.255'
IPV4NETMASK='255.255.255.0'
IPV4GATEWAY='10.10.10.1'
IPV4DNS0='169.254.169.254'
IPV4DNS1='0.0.0.0'
HOSTNAME=''
DNSDOMAIN='test.com'
NISDOMAIN=''
ROOTSERVER='169.254.169.254'
ROOTPATH=''
filename='/ipxe.efi'
UPTIME='45'
DHCPLEASETIME='86400'
DOMAINSEARCH='test.com'
net-interface-handler translates it to:
nameserver 169.254.169.254
domainsearch test.com
instead of:
nameserver 169.254.169.254
search test.com
The problem is that domainsearch is not a valid configuration option
for /etc/resolv.conf and is ignored.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/open-iscsi/+bug/1791108/+subscriptions
More information about the foundations-bugs
mailing list