[{"data":1,"prerenderedAt":299},["ShallowReactive",2],{"project-12514170":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":44,"post_text":46,"what":47,"said":71,"maker_in_thread":170,"shape":180,"grid":184,"attempts":259,"same_week":260,"maker_shows":31,"maker_hidden":291,"reader_version":292,"card":293},"12514170","dingo","a Google DNS-over-HTTPS caching proxy in Go","title","Show HN: dingo - a Google DNS-over-HTTPS caching proxy in Go","https:\u002F\u002Fgithub.com\u002Fpforemski\u002Fdingo","github.com","pjf",1474035715,2016,75,31,509,2264,23,"notable","security_privacy","encrypted dns proxy","cli",[24,25,26,27],"dns over https","dns proxy","encrypted dns","google public dns","curious",-0.273,{"positive":31,"neutral":32,"mixed":33,"critical":34},2,10,0,7,19,{"idea":37,"privacy":39,"execution":41,"design":42,"docs":43},{"positive":33,"critical":38},1,{"positive":38,"critical":40},3,{"positive":38,"critical":31},{"positive":33,"critical":33},{"positive":33,"critical":38},[38,33,40,33,40,33,33,38,40,33,33,33,38,33,33,40,33,33,40,40,40,40,38,40,45,40,38,33,45,38,38],5,null,{"problem":48,"audience":46,"pricing":46,"motivation":56,"time_to_build":46,"stack":63,"openness":68,"stage":69,"team_size":70},{"value":49,"source":50,"evidence":51},"DNS queries sent in clear text on local networks can be sniffed.","commenter",[52],{"id":53,"by":54,"text":55},"12517429","dexterdog","When you are out and about with your laptop you are usually making your DNS calls to the local router which many view as a big privacy concern. Even if you use something like…",{"value":57,"source":58,"evidence":59},"Maker's first non-trivial Go project.","maker",[60],{"id":61,"by":11,"text":62},"12517174","Thanks for all your comments. Below I put quick replies to some of them: 1\u002F I hope to update the project to use QUIC soon, so it will use encrypted UDP to fetch DNS data from…",[64],{"value":65,"source":58,"evidence":66},"Go",[67],{"id":61,"by":11,"text":62},"open_source","launched","solo",{"praise":72,"objections":81,"requests":118,"questions":136,"alternatives":158},[73],{"value":74,"source":50,"evidence":75},"Useful for encrypting DNS traffic on untrusted networks.",[76,77],{"id":53,"by":54,"text":55},{"id":78,"by":79,"text":80},"12518756","icebraining","When you connect to any site, your browser sends the domain in clear-text (even for HTTPS - see SNI). The only way to avoid this is to use a VPN, but then you can route regular…",[82,93,104,111],{"value":83,"source":50,"evidence":84},"Using go run made adoption hard; no prebuilt binaries at launch.",[85,89],{"id":86,"by":87,"text":88},"12515880","wyattjoh","The use of `go run` here makes adopting this very hard. The benefit of using Go for projects (in my experience) is that you can build for multiple OS\u002FArch super, super easy. I'd…",{"id":90,"by":91,"text":92},"12516364","gouggoug","I think the point wyattjoh was making is that having to install the go toolchain is hindering adoption and that giving downloadable binaries that you could run directly, like…",{"value":94,"source":50,"evidence":95},"Relies on normal DNS to resolve the server hostname.",[96,100],{"id":97,"by":98,"text":99},"12516826","ShakataGaNai","Am I the only one who took a quick look at this and went \"How can this DNS be 'secure' if it has to use normal DNS to look up dns.google.com?\"",{"id":101,"by":102,"text":103},"12517025","advisedwang","Because you validate the certificate presented so that you know the endpoint is really Google.",{"value":105,"source":50,"evidence":106},"Code needs gofmt and linting.",[107],{"id":108,"by":109,"text":110},"12517726","jzelinskie","This code needs a pass through gofmt, among many of the other Go linting technologies.",{"value":112,"source":50,"evidence":113},"Not a Google project; it only uses Google's endpoint.",[114],{"id":115,"by":116,"text":117},"12516475","davidu","DNSCrypt (https:\u002F\u002Fdnscrypt.org\u002F) would be more elegant here (DTLS also okay) and is in-band wrapper for DNS. It's what TLS is for HTTP but for DNS and keeps things UDP. Worth…",[119,124],{"value":120,"source":50,"evidence":121},"Ship downloadable binaries.",[122,123],{"id":86,"by":87,"text":88},{"id":90,"by":91,"text":92},{"value":125,"source":50,"evidence":126},"Use DNSCrypt or DNS over DTLS instead of HTTP.",[127,128,132],{"id":115,"by":116,"text":117},{"id":129,"by":130,"text":131},"12515828","allendoerfer","Encryption is nice, but does it have to be the overhead of HTTP? What would be a sensible alternative protocol?",{"id":133,"by":134,"text":135},"12516157","zokier","DNSCrypt or RFC7858 (dprive) are probably closest equivalents.",[137,144,151],{"value":138,"source":50,"evidence":139},"Why random padding up to 500 bytes in requests?",[140],{"id":141,"by":142,"text":143},"12518103","nickodell","It seems like this includes up to 500 bytes of padding in a request. Is there a reason for that?",{"value":145,"source":50,"evidence":146},"Is SNI used for censorship?",[147],{"id":148,"by":149,"text":150},"12518773","textmode","\"It can even \\\"spoof\\\" the TLS SNI string to avoid HTTPS firewalls...\" Are you confirming SNI is being used for censorship?",{"value":152,"source":50,"evidence":153},"What problem does it solve?",[154],{"id":155,"by":156,"text":157},"12516444","vemv","What problem does this project solve? It's not immediately obvious what the thing does from the description.",[159,163],{"value":160,"source":50,"evidence":161},"DNSCrypt and openresolve.com resolver.",[162],{"id":115,"by":116,"text":117},{"value":164,"source":50,"evidence":165},"gdns-go by ayanamist.",[166],{"id":167,"by":168,"text":169},"12517880","yegle","My friend also wrote a similar tool in Go. This tool uses Taobao's API to detect your external IP address so edns will not be fixed string. https:\u002F\u002Fgithub.com\u002Fayanamist\u002Fgdns-go",{"comments":171,"answered":38,"key":172},4,[173,174,177],{"id":61,"text":62},{"id":175,"text":176},"12518129","Yes, the random padding (which is optional) is to counter-measure possible side-channel privacy attacks that could infer the domain name from the packet sizes. The Google…",{"id":178,"text":179},"12531668","Thanks, you can now download binaries at https:\u002F\u002Fgithub.com\u002Fpforemski\u002Fdingo\u002Ftree\u002Fv0.11\u002Frelease\u002Fdingo-0.11",{"commenters":181,"max_depth":171,"maker_replies":171,"first_comment_mins":182,"lifespan_hours":183},25,204,119,[185,187,189,191,192,194,198,202,204,208,210,213,217,221,223,226,228,229,231,233,235,238,240,241,242,246,248,250,254,256,257],[115,33,38,186,116,33],"project\u002Fcritical\u002Fidea",[61,38,33,188,11,38],"maker\u002Fneutral\u002Fnone",[141,38,40,190,142,33],"project\u002Fneutral\u002Fprivacy",[175,38,33,190,11,38],[148,38,40,193,149,33],"maker\u002Fneutral\u002Fprivacy",[195,38,33,196,197,33],"12520335","commenter\u002Fneutral\u002Fnone","clinta",[199,38,33,200,201,33],"12547707","commenter\u002Fneutral\u002Fprivacy","NetStrikeForce",[86,31,38,203,87,33],"project\u002Fcritical\u002Fexecution",[205,31,40,206,207,33],"12515923","project\u002Fneutral\u002Fexecution","icholy",[90,31,33,209,91,33],"commenter\u002Fneutral\u002Fexecution",[211,31,33,196,212,33],"12517237","zalmoxes",[214,31,33,215,216,33],"12517568","other\u002Fneutral\u002Fnone","eropple",[218,31,38,219,220,33],"12517233","project\u002Fcritical\u002Fprivacy","j3097736",[222,31,33,196,216,33],"12517309",[224,31,33,196,225,33],"12517713","0xdeadbeefbabe",[227,31,40,206,197,33],"12520449",[178,31,33,188,11,38],[230,31,33,188,11,38],"12535182",[129,40,40,232,130,33],"project\u002Fneutral\u002Fdesign",[133,40,40,234,134,33],"project\u002Fneutral\u002Fidea",[236,40,40,234,237,33],"12516294","ademarre",[239,40,40,234,134,33],"12516410",[97,171,38,219,98,33],[101,171,40,190,102,33],[243,45,45,244,245,33],"12518209","project\u002Fpositive\u002Fexecution","x0rx0r",[167,247,40,234,168,33],6,[155,34,38,249,156,33],"project\u002Fcritical\u002Fdocs",[251,34,33,252,253,33],"12516969","commenter\u002Fneutral\u002Fdocs","sciurus",[53,34,45,255,54,33],"project\u002Fpositive\u002Fprivacy",[78,34,38,219,79,33],[108,258,38,203,109,33],8,[],[261,266,271,276,281,286],{"id":262,"name":263,"points":264,"category":265},"12539109","Primitive",894,"creative",{"id":267,"name":268,"points":269,"category":270},"12552623","Lemonade",185,"finance_crypto",{"id":272,"name":273,"points":274,"category":275},"12549874","Weebly 4",171,"web_saas",{"id":277,"name":278,"points":279,"category":280},"12504012","Power Toothpaste",169,"consumer_social",{"id":282,"name":283,"points":284,"category":285},"12505139","GraphicsJS",124,"languages",{"id":287,"name":288,"points":289,"category":290},"12525448","SpaceNeovim",105,"dev_tools",false,"v2",{"id":294,"name":5,"line":6,"ai":291,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":295,"top":18,"kw":296,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":297,"url":9,"mix":298,"praise":74,"objection":83,"sub":21},12514170,-0.27,[24,25,26,27],"1030300130001003003333135310511",[31,32,33,34],1794036547855]