niclabs / dns-tools

DNS tools for zone signature (file, pkcs11-hsm) and validation, and zone digest (ZONEMD)
MIT License
16 stars 4 forks source link

Ipv6 is not supported. #20

Closed itachiliu closed 3 years ago

itachiliu commented 3 years ago

When I run the dtcnode in ipv6 server, the error occured. Will you release a version that supports IPv6 in the future?

Error in detail dtcconfig command : ./dtcconfig create -t 3 -n [240e:eb:8001:e13::156]:1111,[240e:eb:8001:e13::157]:1111,[240e:eb:8001:e13::158]:1111 -H 240e:eb:8001:e13::155 -d /etc/dtc/dtc.sqlite3 -l /etc/dtc/dtc.log

dtcnode-config.yaml : config: publickey: :aiwtxFO7/5mC-4nIjQ^jhzm6e}//1frj7X{Q{wJ privatekey: '*)LBx:^F<XsMqZ2iR&bg7LYKR>93]DgOcNK[/+1T' host: 240e:eb:8001:e13::156 port: 1111 client: publickey: 4RIVWZuHQ=rj5Iq#.R^$RpV host: 240e:eb:8001:e13::155 rsa: keys: [] ecdsa: keys: []

Error info : root@dmserver:~/dtcnode# ./dtcnode 2021/01/21 03:04:59 AUTH: Starting 2021/01/21 03:04:59 Creating node with ID: dc43ea945b11deab 2021/01/21 03:04:59 Listening message in tcp://240e:eb:8001:e13::156:1111 2021/01/21 03:04:59 AUTH: Stopping 2021/01/21 03:04:59 AUTH: Quitting: received QUIT message 2021/01/21 03:04:59 AUTH: Stopped Error: error initializing node: no such device

eriverosr commented 3 years ago

Can you try putting your IPv6 address in brackets notation? I quote from the link:

Since IPv6 no longer uses points to seperate values, but colons, it poses a direct problem for specifying portnumbers, as its default notation is :. This can be solved by placing the IP address in between brackets, such as [::3]:8080 (which addresses the local loopback address, on port 8080). For websites that use the IP for access, this should be http://[ip-address]:port.

Tell me if it works 🙂

itachiliu commented 3 years ago

Can you try putting your IPv6 address in brackets notation? I quote from the link:

Since IPv6 no longer uses points to seperate values, but colons, it poses a direct problem for specifying portnumbers, as its default notation is :. This can be solved by placing the IP address in between brackets, such as [::3]:8080 (which addresses the local loopback address, on port 8080). For websites that use the IP for access, this should be http://[ip-address]:port.

Tell me if it works 🙂

I try it, but it does not work.

I find another method to solve this issue as follow:

When I took a look your code and read the official documentation of ZMQ, then added a line to your code in dtcnode/server/node.go and dtc/network/zmq/node.go

func (node *Node) connect() error{ s, err := node.context.NewSocket(zmq4.REP) if err != nil { return err } node.socket = s err = node.socket.SetIpv6(true) if err != nil { return err } ………… ` Then it works.

Maybe this will help you.

eriverosr commented 3 years ago

Thank you for your suggestion. I pushed the changes on both repositories. I would appreciate it if you can test the code in the master branch.

itachiliu commented 3 years ago

Thank you for your suggestion. I pushed the changes on both repositories. I would appreciate it if you can test the code in the master branch.

I test it in the maser just now. the program works as expected.