东汉大将军窦宪两次出兵,最终消灭了北匈奴政权,自那时起至魏晋时期,大量如匈奴、鲜卑、乌桓等原本游弋于边塞的少数民族纷纷归附中原政权,并被迁入塞内定居。曹魏时,大量的少数民族已经与汉族呈杂居之势,散布在今天河北、山西、陕西等地,著名的五部匈奴甚至已经扩展到了今天山西省西南部地区。随着西晋昙花一现的稳定局面被“八王之乱”打破,十几年的诸王内战导致国力极大损耗,失去了对内附少数民族的压倒性优势与震慑力,以匈奴为首的五大少数民族纷纷起兵反晋,争夺天下,即匈奴、鲜卑、羯、氐、羌,史称“五胡乱华”。两京(洛阳和长安)沦陷,晋怀帝、晋愍帝先后被俘,西晋灭亡。北方士族百姓蜂拥南渡避祸并建立了东晋,中原从此陷入了史无前例的大混战和大混乱之中,是为“永嘉之乱”。
唐代诗人张籍的《永嘉行》回顾了那时的悲惨景象:
黄头鲜卑入洛阳,
胡儿执戟升明堂。
晋家天子作降虏,
公卿奔走如牛羊。
紫陌旌幡暗相触,
家家鸡犬惊上屋。
妇人出门随乱兵,
夫死眼前不敢哭。
九州诸侯自顾土,
无人领兵来护主。
北人避胡多在南,
南人至今能晋语。
这种局面持续了130多年,直到由鲜卑人建立的北魏政权于公元439年再一次统一了北方才基本结束。这一时期南方取代东晋王朝的是刘裕建立的宋王朝,南北方形成了百余年的对峙局面,是为南北朝。
建立北魏的鲜卑人拓跋部本是崛起于白山黑水之间的游牧部族,入主中原后逐步强势兼并了多个割据政权,成为这里新的主人。当他们正忙于逐鹿之时,曾经任他们驰骋的北方草原上已经崛起了新的游牧部族柔然(蠕蠕),令北魏在与南朝斗争的同时,陷入两线作战的不利局面,迫使北魏不得不开始重新采取修筑长城的办法来应付柔然的进逼。
北魏长城示意图
《魏书·太宗纪》载:明元帝泰常八年(423年)“蠕蠕犯塞,二月戊辰,筑长城于长川之南,起自赤城,西至五原,延袤二千余里,备置戍卫”。这道长城东起今河北省赤城县,经张北县、尚义县进入内蒙古自治区境内,过化德县、商都县、察右后旗、察右中旗、四子王旗、武川县、固阳县,至包头市九原区,总长度约1000公里,这一线的长城与阴山南部的赵北长城和秦汉长城多有重合,应该是在旧长城的遗址上加以利用。
北魏太武帝于神䴥二年(429年)出兵两路大破柔然,并先后在阴山至山西北部设置了六大军镇以保卫都城平城(今山西大同),这六镇是沃野镇(五原县东北)、怀朔镇(固阳县西南)、抚冥镇(四子王旗东南)、武川镇(武川县西)、柔玄镇(兴和县西北)、怀荒镇(张北县)。至孝文帝太和年间(477年—499年),在六镇之下又设有南北两道复线长城,北线大致在四子王旗、达尔罕茂明安联合旗和武川县境内,全长约190公里。南线从商都县经察右后旗、察右中旗到四子王旗,再向西南进入达尔罕茂明安联合旗东南部及武川县,全长约260公里,南北两线的西段有所重合。另在今河北省东北部的丰宁县至内蒙古的多伦县和正蓝旗境内还建有一条约50公里的长城,被称为太和长堑,应该是用以防御库莫奚对北魏东北侧翼的威胁。太和长堑和六镇北线之间被浑善达克沙地截断,至于是否曾经相连,抑或是被流沙掩埋,现在还不得而知。从泰常八年兴建长城到六镇设立再到六镇长城与太和长堑的修建,可以看出北魏疆域向北的逐渐拓展。
北魏太平真君七年(446年),在平城周围筑“畿上塞围”。《魏书·世祖纪》载:“丙戌,发司、幽、定、冀四州十万人筑畿上塞围。起上谷,西至于河,广袤皆千里。”通常认为畿上塞围是环绕京城及周边地区的南北两道军事防线。北线大致从今北京市延庆区居庸关向北,过河北、山西北部,再经内蒙古自治区的兴和县、丰镇市、凉城县、和林格尔县及清水河县,到达黄河边。南线约从居庸关向西南入山西灵丘后转向西,经今恒山山脉到达黄河东岸的偏关县。但这两条线存在的证据目前似乎并不充分,质疑颇多。如果两条线都的确曾经建成过,就基本形成了一个巨大的环形口袋式防线,把北魏的京畿地区环抱其中,其走向与后世的明代内外长城十分接近。
公元534年暨北魏孝武帝永熙三年,北魏正式分裂成东魏和西魏两部分,东魏政权立孝静帝元善见为君,实际权力则掌握在高欢家族手中。东魏同样面临着北方柔然的南侵,于是在利用北魏已有长城的基础上,又进行过局部地区的修缮和补充建设。
《魏书·孝静帝纪》载,武定元年(543年)八月,“是月,齐献武王(高欢)召夫五万于肆州北山筑城,西自马陵戍,东至土隥。四十日罢”。其位置大致在今山西忻州市的五寨县东到原平市崞阳镇一带。显然这更像是对北魏畿上塞围的一种增补之举。