自从武帝亲自巡视北方边境以后,汉朝对匈奴的战略,一直到宣帝神爵二年(前60年)的五十年中,主要是采取正面防御,削弱其侵略势力的方针。
公元前105年,匈奴乌维单于死了,他的儿子儿单于继位,因惧怕汉兵的袭击,便把他的人畜往西北方向迁徙。从此,他的部属与汉朝对应的边郡也改变了,左部直对云中,右部直对酒泉、敦煌,单于的队伍则直对五原至鸡鹿塞一带。针对这一变化,汉朝加强经营五原和朔方地区,把它建设成为抗御匈奴的前方基地。主要措施有:
(一)增修沿边长城和城障,不断派遗大军驻防,计先后派遣了拔胡将军郭昌,促野候赵破奴屯朔方以东地区防御匈奴,命光禄助徐自为筑五原塞外列城,从光禄塞开始,向西北一直修筑到卢朐。工程竣工后,命游击将军韩说将兵屯守这些列城。还命强弩将军路博德将数万人修居延塞(今额济纳旗所在地)。在河西走廊,从永居(今甘肃水登境)西至敦煌,修起了长城,教煌以西至盐泽(罗布淖尔)也修筑了亭隧,对其它旧有长城,也进行大规模的修缮。
(二)移民屯田实边。武帝元狩三年(前120年)山东水灾,武帝就迁徙贫民于函谷关以西,及朔方以南的秦中七十余万口,元鼎六年(前111年)在上郡、朔方、西河、河西设田官,命边塞士兵六十万人屯田戍边。天汉元年(前100年)秋天,又遣发请戍屯五原,屯田戍边,都由官家供给牛犁谷种,在朔方等地开凿渠道,引水灌溉,修集的达到几万人,可见当时水利工程的规模是相当宏伟的。因此,从五原到朔方,再西至令居一带,据史书记载,农田毗连,水渠交错。毫无疑问,这一带已建设成为支援大军戍守、出征的主要基地。
(三)斩断匈奴的左右臂。汉朝在东线方面,征服朝鲜、乌桓,把乌桓的人民徙居于河北北部、内蒙昭乌达盟一带,命令他们侦察匈奴的动静。在西线方面,派遣张骞出使西域,以公主下嫁给乌孙王,又派贰师将军李广利西伐大宛,并三十六国。又在河西走廊设置了四郡,隔绝了匈奴与羌族的联系。
经过这一系列军事、政治、边防和经济上的措施,基本上解除了匈奴奴隶主的威胁,匈奴单于曾多次表示愿意恢复和亲,但是汉武帝不肯答应,要求匈奴归降,结果,在一段时期内双方继续处于敌对状态。在汉武帝后期,五次派兵出征,多数都是从五原、朔方、居延出发,太初二年(前103年),赵破奴率二万骑出朔方北二千多里,结果全军覆没。天汉二年(前99年)贰师将军李广利率二万骑出酒泉,李陵将步卒五千人出居延,进攻匈奴,李陵兵败投降。征和三年(前90年),贰师将军李广利将七万骑出五原,还有两路军队出西河(可能是鸡鹿塞)、酒泉等地,深入漠北追击匈奴,结果又大败,李广利投降。
武帝后期出兵漠北,穷追匈奴,为什么往往劳而无功,甚至丧师折将呢?主要原因是,匈奴感到自己力量再不能够与汉朝相抗衡,便远徙西北,避开了汉军的军锋。当汉军长途跋涉,疲劳不堪后,便抓住有利时机,集中力量,攻击汉军的一路。所以,汉军五次出征,不是见不到敌人,就是其一路军队被消灭掉。
武帝末年,他开始认识到,由于频繁用兵,士兵、军马伤亡很大。致使人民劳役过重,财竭民穷,天下虚耗,百姓流离,各池农民起义风起云涌,所以不得不停止对匈奴的用兵。
到了昭帝、宣帝时代,汉朝汲取了武帝后期用兵的经验教训,采取了战略防御的方针,不再派兵出击,只是多次发大军屯住缘边九都,而又主要是加强五原至居延一线。边郡长城亭障城堡并列,烽火侯望精明。所以,这一时期匈奴寇盗边境愈来愈少,虏获也愈来愈少,有时反而遭受重大损失。他们象惊弓之鸟一样。譬如宣帝地节二年(前68年),虚间权渠单于准备与汉和亲,左大且(音沮)渠(匈奴官名)不同意,主张先发兵到边境上去察看一下。他自报奋勇与呼卢王各带一万骑兵向南出发。走到路上。有三人跑到汉朝去报告消息,左大且渠便赶快把兵撤了回去。在这一时期,匈奴单于积极主张与汉和好,很少犯边,不敢派人到南边放牧。他们惧怕汉兵的袭击,派骑兵驻受降城防守,还在吾余水上筑桥,以便在汉军袭击时遁逃。
这时,匈奴也更虚弱了,甚至西域诸国和丁零、乌桓等民族,也出兵攻击匈奴,匈奴许多部落的贵族,因统治阶级内部斗争的发展,不断率部降汉。