真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言域名掃描 go域名解析

09-kubernetes中的域名解析流程

從Kubernetes 1.11版本開始,Kubernetes集群的DNS服務(wù)由CoreDNS提供。CoreDNS是CNCF基金會(huì)的一個(gè)項(xiàng)目,是用Go語言實(shí)現(xiàn)的高性能、插件式、易擴(kuò)展的DNS服務(wù)端。CoreDNS解決了KubeDNS的一些問題,例如dnsmasq的安全漏洞、externalName不能使用stubDomains設(shè)置,等等。

成都創(chuàng)新互聯(lián)公司專注于正鑲白企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城網(wǎng)站定制開發(fā)。正鑲白網(wǎng)站建設(shè)公司,為正鑲白等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)

CoreDNS支持自定義DNS記錄及配置upstream DNS Server,可以統(tǒng)一管理Kubernetes基于服務(wù)的內(nèi)部DNS和數(shù)據(jù)中心的物理DNS。

CoreDNS沒有使用多個(gè)容器的架構(gòu),只用一個(gè)容器便實(shí)現(xiàn)了KubeDNS內(nèi)3個(gè)容器的全部功能。

從kubernetes官方提供的 coredns.yml 文件中,不難看出coredns服務(wù)配置至少需要一個(gè)ConfigMap、一個(gè)Deployment和一個(gè)Service共3個(gè)資源對象。ConfigMap coredns 主要配置文件Corefile的內(nèi)容:

其中主要有二個(gè)地方來解析配置

1、這段配置的意思是cluster.local后綴的域名都是kubernetes內(nèi)部域名,coredns會(huì)監(jiān)控service的變化來修改域名的記錄

2、如果coredns沒有找到dns記錄,則去找 /etc/resolv.conf 中的 nameserver 解析

接下來使用一個(gè)帶有nslookup工具的Pod來驗(yàn)證DNS服務(wù)能否正常工作:

通過nslookup進(jìn)行測試。

查找defaul命名空間存在的ng-deploy-80服務(wù)

如果某個(gè)Service屬于不同的命名空間,那么在進(jìn)行Service查找時(shí),需要補(bǔ)充Namespace的名稱,組合成完整的域名。下面以查找kubernetes-dashboard服務(wù)為例,

眾所周知, DNS 服務(wù)器用于將域名轉(zhuǎn)換為 IP (具體為啥要轉(zhuǎn)換建議復(fù)習(xí)下 7 層網(wǎng)絡(luò)模型). Linux 服務(wù)器中 DNS 解析配置位于 /etc/resolv.conf , 在 Pod 中也不例外,

DNS 策略可以逐個(gè) Pod 來設(shè)定。當(dāng)前kubernetes支持這4中DNS 策略

如果我們不填dnsPolicy, 默認(rèn)策略就是 ClusterFirst 。

kubelet 在起 pause 容器的時(shí)候,會(huì)將其 DNS 解析配置初始化成集群內(nèi)的配置。配置: 它的 nameserver 就是指向 coredns 的

k8s里面有4種DNS策略, 而coredns使用的DNS策略就是Default, 這個(gè)策略的意思就是繼承宿主機(jī)上的/etc/resolve.conf, 所以coredns Pod 里面的/etc/resolve.conf 的內(nèi)容就是宿主機(jī)上的內(nèi)容。

在集群中 pod 之間互相用 svc name 訪問的時(shí)候,會(huì)根據(jù) resolv.conf 文件的 DNS 配置來解析域名,下面來分析具體的過程。

pod 的 resolv.conf 文件主要有三個(gè)部分,分別為 nameserver、search 和 option。而這三個(gè)部分可以由 K8s 指定,也可以通過 pod.spec.dnsConfig 字段自定義。

nameserver

resolv.conf 文件的第一行 nameserver 指定的是 DNS 服務(wù)的 IP,這里就是 coreDNS 的

clusterIP:

也就是說所有域名的解析,都要經(jīng)過coreDNS的虛擬IP 10.100.0.2 進(jìn)行解析, 不論是內(nèi)部域還是外部域名。

search 域

resolv.conf 文件的第二行指定的是 DNS search 域。解析域名的時(shí)候,將要訪問的域名依次帶入 search 域,進(jìn)行 DNS 查詢。

比如我要在剛才那個(gè) pod 中訪問一個(gè)域名為 ng-deploy-80的服務(wù),其進(jìn)行的 DNS 域名查詢的順序是:

options

resolv.conf 文件的第三行指定的是其他項(xiàng),最常見的是 dnots。dnots 指的是如果查詢的域名包含的點(diǎn) “.” 小于 5,則先走 search 域,再用絕對域名;如果查詢的域名包含點(diǎn)數(shù)大于或等于 5,則先用絕對域名,再走 search 域。K8s 中默認(rèn)的配置是 5。

也就是說,如果我訪問的是 a.b.c.e.f.g ,那么域名查找的順序如下:

通過 svc 訪問

在 K8s 中,Pod 之間通過 svc 訪問的時(shí)候,會(huì)經(jīng)過 DNS 域名解析,再拿到 ip 通信。而 K8s 的域名全稱為 "service-name.namespace.svc.cluster.local",而我們通常只需將 svc name 當(dāng)成域名就能訪問到 pod,這一點(diǎn)通過上面的域名解析過程并不難理解。

參考

(1)K8S落地實(shí)踐 之 服務(wù)發(fā)現(xiàn)(CoreDNS)

(2)自定義 DNS 服務(wù)

(3)Kubernetes 服務(wù)發(fā)現(xiàn)之 coreDNS

(4)Kubernetes 集群 DNS 服務(wù)發(fā)現(xiàn)原理

(5)Kubernetes之服務(wù)發(fā)現(xiàn)和域名解析過程分析

GO語言涉及靜態(tài)掃描嗎

gometalinter是一個(gè)go語言linter工具集,通過靜態(tài)代碼掃描,能夠找出代碼中潛在的問題。

go語言中怎么獲取域名對應(yīng)的ip地址

package main

import (

"fmt"

"net"

"os"

)

func main() {

addrs, err := net.InterfaceAddrs()

if err != nil {

fmt.Println(err)

os.Exit(1)

}

for _, address := range addrs {

// 檢查ip地址判斷是否回環(huán)地址

if ipnet, ok := address.(*net.IPNet); ok !ipnet.IP.IsLoopback() {

if ipnet.IP.To4() != nil {

fmt.Println(ipnet.IP.String())

}

}

}

}

域名解析和緩存

當(dāng)瀏覽器訪問某個(gè)網(wǎng)站域名或者應(yīng)用服務(wù)通過域名方式訪問API接口的時(shí)候,需要用IP和port建立TCP連接或者復(fù)用底層連接,IP地址的獲取依賴對域名的解析,完成解析的角色稱為域名解析器(dns resolver)。解析的大致過程就是檢查cache是否有該記錄,本地hosts文件是否有,都沒有命中就查詢dns server進(jìn)行CNAME和A記錄的查詢。在linux系統(tǒng)下,dns server的IP一般在/etc/resolv.conf文件中。

域名解析常用dig命令,以及在 進(jìn)行域名解析測試。

考慮到域名IP地址不是經(jīng)常變動(dòng),減少查詢dns的冗余,并顯著降低高QPS應(yīng)用服務(wù)查詢dns的壓力(最后一節(jié)有benchmark對比),需要對dns信息進(jìn)行緩存。因?yàn)檐浖?yīng)用不同、開發(fā)語言不同、操作系統(tǒng)不同,dns resolver的實(shí)現(xiàn)和封裝也不同,會(huì)遇到不同的層面的cache。比如windows的dns resolver會(huì)有cache,linux默認(rèn)不緩存;go語言可以選擇cgo或者自己實(shí)現(xiàn)的dns resolver;chrome瀏覽器也會(huì)有自己的cache。

dns cache除了好處以外,也帶來了其他問題。比如dns cache可能被惡意病毒修改,將真實(shí)IP改成釣魚網(wǎng)站的IP,對用戶進(jìn)行誘導(dǎo)和釣魚。還有在服務(wù)發(fā)現(xiàn)的這種特定場景下,dns cache是不被允許的,會(huì)出現(xiàn)IP更新不及時(shí)導(dǎo)致API流量的損失和錯(cuò)誤,例如部署上線或者宕機(jī),相比之下,運(yùn)維響應(yīng)的時(shí)長會(huì)造成更大的損失。但為了解決這個(gè)問題,在client和server端中間增加一層代理,dns記錄指向這個(gè)代理。如圖:

代理職責(zé)一般有:

代理一般分為:

四層代理對外暴露的IP一般稱為虛IP(VIP)

example_test.go

性能對比:

從對比中可看出:go的pure resolver因沒有cache和網(wǎng)絡(luò)不穩(wěn)定的因素,總耗時(shí)較多。而cgo的resolver比較穩(wěn)定且耗時(shí)較低。

linux或類unix系統(tǒng)是沒有操作系統(tǒng)級別的dns cache。除非安裝了dnsmasq或者

nscd(Name Service Caching Daemon),并開啟。

匯總下關(guān)于安全的13款必備工具

匯總下關(guān)于安全的幾款必備工具:

Burp Suite 是用于攻擊web 應(yīng)用程序的集成平臺(tái),http協(xié)議分析神器,里面包括了不少安全必備的功能,重放、爆破、掃描并且支持自定義腳本,實(shí)現(xiàn)自己想要的功能。Burp Suite為這些工具設(shè)計(jì)了許多接口,以加快攻擊應(yīng)用程序的過程。所有工具都共享一個(gè)請求,并能處理對應(yīng)的HTTP 消息、持久性、認(rèn)證、代理、日志、警報(bào)。

工具下載地址:

工具運(yùn)行需要Java環(huán)境,請自行安裝。

Nmap,也就是Network Mapper,最早是Linux下的網(wǎng)絡(luò)掃描和嗅探工具包,掃描網(wǎng)絡(luò)情況和端口開放情況,也可以加載nmap內(nèi)置的poc腳本發(fā)現(xiàn)安全漏洞

官網(wǎng):

nmap是一個(gè)網(wǎng)絡(luò)連接端掃描軟件,用來掃描網(wǎng)上電腦開放的網(wǎng)絡(luò)連接端。確定哪些服務(wù)運(yùn)行在哪些連接端,并且推斷計(jì)算機(jī)運(yùn)行哪個(gè)操作系統(tǒng)(這是亦稱 fingerprinting)。它是網(wǎng)絡(luò)管理員必用的軟件之一,以及用以評估網(wǎng)絡(luò)系統(tǒng)安全。

正如大多數(shù)被用于網(wǎng)絡(luò)安全的工具,nmap 也是不少黑客及駭客(又稱腳本小子)愛用的工具 。系統(tǒng)管理員可以利用nmap來探測工作環(huán)境中未經(jīng)批準(zhǔn)使用的服務(wù)器,但是黑客會(huì)利用nmap來搜集目標(biāo)電腦的網(wǎng)絡(luò)設(shè)定,從而計(jì)劃攻擊的方法。

Nmap 常被跟評估系統(tǒng)漏洞軟件Nessus 混為一談。Nmap 以隱秘的手法,避開闖入檢測系統(tǒng)的監(jiān)視,并盡可能不影響目標(biāo)系統(tǒng)的日常操作。

這個(gè)主要是利用sql注入漏洞的工具,可以自定義掃描規(guī)則和方式,若是通讀源碼之后對sql注入會(huì)有相當(dāng)深的理解

官網(wǎng):

這個(gè)是域名爆破工具,owasp開發(fā)的,該工具采用Go語言開發(fā),它可以通過遍歷等形式爬取數(shù)據(jù)源和Web文檔,或利用IP地址來搜索相關(guān)的網(wǎng)塊和ASN,并利用所有收集到的信息來構(gòu)建目標(biāo)網(wǎng)絡(luò)拓?fù)洹K俣群桶l(fā)現(xiàn)都相當(dāng)不錯(cuò)。

項(xiàng)目地址:

官網(wǎng)

ubuntu下安裝命令如下:

Masscan,是 robertdavidgraham 在 Github 上開源的端口掃描工具。

Masscan 性能優(yōu)越,極限速度可以從單機(jī)每秒發(fā)送1000萬個(gè)數(shù)據(jù)包。Masscan 使用了與另一個(gè)著名的掃描工具 —— nmap 類似的命令行參數(shù),方便進(jìn)行上手使用。

Masscan 針對 TCP 端口進(jìn)行掃描,使用 SYN 掃描的方式,不建立一個(gè)完全的 TCP 連接,而是首先發(fā)送一個(gè) SYN 數(shù)據(jù)包到目標(biāo)端口,然后等待接收。如果接收到 SYN-ACK 包,則說明該端口是開放的,此時(shí)發(fā)送一個(gè) RST 結(jié)束建立過程即可;否則,若目標(biāo)返回 RST,則端口不開放。 這個(gè)用來發(fā)現(xiàn)大規(guī)模網(wǎng)絡(luò)下存活的ip和端口還是不錯(cuò),配合nmap發(fā)現(xiàn)服務(wù)可快速掃描網(wǎng)絡(luò)

項(xiàng)目代碼位于

安裝 Masscan 可以從源碼進(jìn)行編譯,在 Debian/Ubuntu 平臺(tái)上,使用命令:

編譯得到的二進(jìn)制程序位于子文件夾 masscan/bin。由于代碼中包含了大量的小文件,可以開啟多線程模式進(jìn)行編譯:

Wireshark(前稱Ethereal)是一個(gè)網(wǎng)絡(luò)封包分析軟件。網(wǎng)絡(luò)封包分析軟件的功能是截取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。Wireshark使用WinPCAP作為接口,直接與網(wǎng)卡進(jìn)行數(shù)據(jù)報(bào)文交換。

下載地址

7、metasploit

Metasploit是一款開源的安全漏洞檢測工具,可以幫助安全和IT專業(yè)人士識(shí)別安全性問題,驗(yàn)證漏洞的緩解措施,并管理專家驅(qū)動(dòng)的安全性進(jìn)行評估,提供真正的安全風(fēng)險(xiǎn)情報(bào)。這些功能包括智能開發(fā),代碼審計(jì),Web應(yīng)用程序掃描, 社會(huì) 工程。團(tuán)隊(duì)合作,在Metasploit和綜合報(bào)告提出了他們的發(fā)現(xiàn)。

下載地址

Cobalt Strike是一款基于java的滲透測試神器,常被業(yè)界人稱為CS神器。自3.0以后已經(jīng)不在使用Metasploit框架而作為一個(gè)獨(dú)立的平臺(tái)使用,分為客戶端與服務(wù)端,服務(wù)端是一個(gè),客戶端可以有多個(gè),非常適合團(tuán)隊(duì)協(xié)同作戰(zhàn),多個(gè)攻擊者可以同時(shí)連接到一個(gè)團(tuán)隊(duì)服務(wù)器上,共享攻擊資源與目標(biāo)信息和sessions,可模擬APT做模擬對抗,進(jìn)行內(nèi)網(wǎng)滲透。

Cobalt Strike集成了端口轉(zhuǎn)發(fā)、服務(wù)掃描,自動(dòng)化溢出,多模式端口監(jiān)聽,win exe木馬生成,win dll木馬生成,java木馬生成,office宏病毒生成,木馬捆綁;釣魚攻擊包括:站點(diǎn)克隆,目標(biāo)信息獲取,java執(zhí)行,瀏覽器自動(dòng)攻擊等等。

mimikatz可以從內(nèi)存中提取明文密碼、哈希、PIN 碼和 kerberos 票證。 mimikatz 還可以執(zhí)行哈希傳遞、票證傳遞或構(gòu)建黃金票證。

下載地址

這個(gè)是內(nèi)網(wǎng)端口轉(zhuǎn)發(fā)工具,對于無法出網(wǎng)的端口相當(dāng)好用。有Windows版和Linux版兩個(gè)版本,Windows版是lcx.exe,Linux版為portmap。

lcx有兩大功能:

代理隧道工具,可以讓工具走隧道進(jìn)入內(nèi)網(wǎng)環(huán)境,配合msf中的代理相當(dāng)好用

github地址

1.建立文件夾proxychains,并進(jìn)入下載

2.解壓縮

3.進(jìn)入解壓縮后的目錄進(jìn)行安裝

4.配置環(huán)境變量 打開文件.bashrc

將下面一段話考入該文件

使改變生效

有管理員權(quán)限 直接執(zhí)行以下命令

netcat被譽(yù)為網(wǎng)絡(luò)安全界的‘瑞士軍刀’,命令用于設(shè)置路由器。 一個(gè)簡單而有用的工具,透過使用TCP或UDP協(xié)議的網(wǎng)絡(luò)連接去讀寫數(shù)據(jù)。它被設(shè)計(jì)成一個(gè)穩(wěn)定的后門工具,能夠直接由其它程序和腳本輕松驅(qū)動(dòng)。同時(shí),它也是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)調(diào)試和探測工具,能夠建立你需要的幾乎所有類型的網(wǎng)絡(luò)連接,還有幾個(gè)很有意思的內(nèi)置功能(詳情請看下面的使用方法)。

【沒有找到該工具logo,隨便找一個(gè)湊數(shù)】

中國蟻劍是一款開源的跨平臺(tái)網(wǎng)站管理工具,它主要面向于合法授權(quán)的滲透測試安全人員以及進(jìn)行常規(guī)操作的網(wǎng)站管理員。

通俗的講:中國蟻劍是 一 款比菜刀還牛的shell控制端軟件。

唯一官方github下載地址:

嫌棄一個(gè)個(gè)下載麻煩的同學(xué)有福了, 一口君已經(jīng)下載,并存放在網(wǎng)盤里,

后臺(tái)回復(fù): 安全工具 即可下載

Go語言使用 map 時(shí)盡量不要在 big map 中保存指針

不知道你有沒有聽過這么一句:在使用 map 時(shí)盡量不要在 big map 中保存指針。好吧,你現(xiàn)在已經(jīng)聽過了:)為什么呢?原因在于 Go 語言的垃圾回收器會(huì)掃描標(biāo)記 map 中的所有元素,GC 開銷相當(dāng)大,直接GG。

這兩天在《Mastering Go》中看到 GC 這一章節(jié)里面對比 map 和 slice 在垃圾回收中的效率對比,書中只給出結(jié)論沒有說明理由,這我是不能忍的,于是有了這篇學(xué)習(xí)筆記。扯那么多,Show Your Code

這是一個(gè)簡單的測試程序,保存字符串的 map 和 保存整形的 map GC 的效率相差幾十倍,是不是有同學(xué)會(huì)說明明保存的是 string 哪有指針?這個(gè)要說到 Go 語言中 string 的底層實(shí)現(xiàn)了,源碼在 src/runtime/string.go里,可以看到 string 其實(shí)包含一個(gè)指向數(shù)據(jù)的指針和一個(gè)長度字段。注意這里的是否包含指針,包括底層的實(shí)現(xiàn)。

Go 語言的 GC 會(huì)遞歸遍歷并標(biāo)記所有可觸達(dá)的對象,標(biāo)記完成之后將所有沒有引用的對象進(jìn)行清理。掃描到指針就會(huì)往下接著尋找,一直到結(jié)束。

Go 語言中 map 是基于 數(shù)組和鏈表 的數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)的,通過 優(yōu)化的拉鏈法 解決哈希沖突,每個(gè) bucket 可以保存 8 對鍵值,在 8 個(gè)鍵值對數(shù)據(jù)后面有一個(gè) overflow 指針,因?yàn)橥爸凶疃嘀荒苎b 8 個(gè)鍵值對,如果有多余的鍵值對落到了當(dāng)前桶,那么就需要再構(gòu)建一個(gè)桶(稱為溢出桶),通過 overflow 指針鏈接起來。

因?yàn)?overflow 指針的緣故,所以無論 map 保存的是什么,GC 的時(shí)候就會(huì)把所有的 bmap 掃描一遍,帶來巨大的 GC 開銷。官方 issues 就有關(guān)于這個(gè)問題的討論, runtime: Large maps cause significant GC pauses #9477

無腦機(jī)翻如下:

如果我們有一個(gè)map [k] v,其中k和v都不包含指針,并且我們想提高掃描性能,則可以執(zhí)行以下操作。

將“ allOverflow [] unsafe.Pointer”添加到 hmap 并將所有溢出存儲(chǔ)桶存儲(chǔ)在其中。 然后將 bmap 標(biāo)記為noScan。 這將使掃描非??欤?yàn)槲覀儾粫?huì)掃描任何用戶數(shù)據(jù)。

實(shí)際上,它將有些復(fù)雜,因?yàn)槲覀冃枰獜腶llOverflow中刪除舊的溢出桶。 而且它還會(huì)增加 hmap 的大小,因此也可能需要重新整理數(shù)據(jù)。

最終官方在 hmap 中增加了 overflow 相關(guān)字段完成了上面的優(yōu)化,這是具體的 commit 地址。

下面看下具體是如何實(shí)現(xiàn)的,源碼基于 go1.15,src/cmd/compile/internal/gc/reflect.go 中

通過注釋可以看出,如果 map 中保存的鍵值都不包含指針(通過 Haspointers 判斷),就使用一個(gè) uintptr 類型代替 bucket 的指針用于溢出桶 overflow 字段,uintptr 類型在 GO 語言中就是個(gè)大小可以保存得下指針的整數(shù),不是指針,就相當(dāng)于實(shí)現(xiàn)了 將 bmap 標(biāo)記為 noScan, GC 的時(shí)候就不會(huì)遍歷完整個(gè) map 了。隨著不斷的學(xué)習(xí),愈發(fā)感慨 GO 語言中很多模塊設(shè)計(jì)得太精妙了。

差不多說清楚了,能力有限,有不對的地方歡迎留言討論,源碼位置還是問的群里大佬 _


文章名稱:go語言域名掃描 go域名解析
本文鏈接:http://weahome.cn/article/hhsiig.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部