support specific namespace short dns resolve

This commit is contained in:
wencaiwulue
2021-08-18 23:23:47 +08:00
parent 8b3231f69c
commit d9d14dfad2
4 changed files with 29 additions and 5 deletions

View File

@@ -3,3 +3,5 @@
## 域名解析功能 --完成 ## 域名解析功能 --完成
## 多个service inbound -- 完成 ## 多个service inbound -- 完成
## 短域名解析

View File

@@ -10,12 +10,18 @@ import (
"path/filepath" "path/filepath"
) )
func DNS(ip string) error { func DNS(ip string, namespace string) error {
var err error var err error
if err = os.MkdirAll(filepath.Join("/", "etc", "resolver"), fs.ModePerm); err != nil { if err = os.MkdirAll(filepath.Join("/", "etc", "resolver"), fs.ModePerm); err != nil {
log.Error(err) log.Error(err)
} }
filename := filepath.Join("/", "etc", "resolver", "local") filename := filepath.Join("/", "etc", "resolver", "local")
fileContent := "nameserver " + ip fileContent := "nameserver " + ip
return ioutil.WriteFile(filename, []byte(fileContent), fs.ModePerm) _ = ioutil.WriteFile(filename, []byte(fileContent), fs.ModePerm)
filename = filepath.Join("/", "etc", "resolver", namespace)
fileContent = "nameserver " + ip + "\nsearch " + namespace + ".svc.cluster.local svc.cluster.local cluster.local\noptions ndots:5"
_ = ioutil.WriteFile(filename, []byte(fileContent), fs.ModePerm)
return nil
} }

View File

@@ -9,7 +9,7 @@ import (
"os/exec" "os/exec"
) )
func DNS(ip string) error { func DNS(ip string, namespace string) error {
tunName := os.Getenv("tunName") tunName := os.Getenv("tunName")
fmt.Println("tun name: " + tunName) fmt.Println("tun name: " + tunName)
args := []string{ args := []string{
@@ -24,9 +24,25 @@ func DNS(ip string) error {
output, err := exec.Command("netsh", args...).CombinedOutput() output, err := exec.Command("netsh", args...).CombinedOutput()
fmt.Println(exec.Command("netsh", args...).Args) fmt.Println(exec.Command("netsh", args...).Args)
log.Info(string(output)) log.Info(string(output))
_ = addNicSuffix(namespace)
if err != nil { if err != nil {
log.Error(err) log.Error(err)
return nil return nil
} }
return nil return nil
} }
// @see https://docs.microsoft.com/en-us/powershell/module/dnsclient/set-dnsclientglobalsetting?view=windowsserver2019-ps#example-1--set-the-dns-suffix-search-list
func addNicSuffix(namespace string) error {
cmd := exec.Command("PowerShell", []string{
"Set-DnsClientGlobalSetting",
"-SuffixSearchList",
fmt.Sprintf("@(\"%s.svc.cluster.local\", \"svc.cluster.local\")", namespace),
}...)
output, err := cmd.CombinedOutput()
if err != nil {
log.Warn(err)
}
log.Info(string(output))
return err
}

View File

@@ -174,7 +174,7 @@ func main() {
} }
//time.Sleep(time.Second * 5) //time.Sleep(time.Second * 5)
dnsServiceIp := util.GetDNSServiceIpFromPod(clientset, restclient, config, util.TrafficManager, namespace) dnsServiceIp := util.GetDNSServiceIpFromPod(clientset, restclient, config, util.TrafficManager, namespace)
if err := dns.DNS(dnsServiceIp); err != nil { if err := dns.DNS(dnsServiceIp, namespace); err != nil {
log.Fatal(err) log.Fatal(err)
} }
if runtime.GOOS == "windows" { if runtime.GOOS == "windows" {