在献帝回归洛阳之时,主要保护他的是张杨、杨奉、韩暹、董承、胡才、李乐以及去卑等人。
其中杨奉、韩暹、胡才、李乐都是出身于白波军。
白波军是黄巾军余部,主要由前黄巾军将领郭太领导。中平五年(188)二月,郭太等人在西河白波谷(今山西襄汾县永固镇)重新起义,号为白波军。次年十月,白波军挺进到河东,队伍达到十来万人。董卓令其女婿中郎将牛辅率军镇压,被白波军击败。
初平元年(190)董卓在白波军和关东联军的双重威胁下迁都长安,但仍然继续派遣牛辅麾下将领李傕、郭汜等人继续和白波军作战。
后来郭太战死,杨奉就是这个时候投靠了西凉军,最后成为了李傕的部下,但当时韩暹、胡才、李乐仍然坚持作战。
兴平二年(195),李傕郭汜混战爆发,郭汜、杨定、董承、杨奉、张济等人一起随汉献帝车驾一起东归,但中途经历了诸多曲折,先是郭汜背信,然后杨定因为私心攻打段煨反而引来了李郭大军,献帝队伍中张济又因为不满杨奉、董承,与李郭联手,杨奉和董承惨败,队伍也惨遭清洗,只勉强保住了天子。
但后来朝廷得到了白波军将领李乐、韩暹、胡才以及南匈奴右贤王去卑的支援,一度挫败了李郭的军势,但最终仍然不敌李郭,再一次遭到了惨痛的失利。
同年十二月左右到达河东安邑的献帝派遣太仆韩融至弘农郡,向李傕、郭汜等人求和,河内郡太守张杨也来支援之后情况才得到了好转。
在面对天子时,只有张杨一人几乎没有表现出任何的野心,真心的拥戴天子。在献帝被李傕郭汜追击而逃到安邑时,张杨得知之后立刻率军赶到保护天子,张杨也因此被拜为安国将军,封晋阳侯。同时张杨还想把汉献帝迎回洛阳,但是诸将不肯从,于是张杨回到野王。
建安元年(196)七月左右,杨奉、董承、韩暹等人弄了半年最终还是无可奈何的携带汉献帝回洛阳,但因为没有粮食吃,张杨于是携带粮食于回洛阳的路上迎接汉献帝,和汉献帝一起回到洛阳。在把献帝安排好后,张杨对其他人说到:“天子当与天下共之,幸有公卿大臣,杨当捍外难,何事京都?”随后再次回到野王,天子对于张杨的行为非常赞赏,于是封他为大司马。
但不想当元帅的士兵不是好士兵,没有野心的老大更不是好老大。张杨想效忠于朝廷,结果反而是使得部下离心。其中以两个人尤为重要,恰巧这两个人都姓董,一个前文已经略有提及,叫做董承,另一个则是张杨麾下的谋士,叫做董昭。
董承原来是牛辅的部下,在历史上有人认为他是董太后的亲戚,也有人认为他是董卓的亲戚,还有人认为他仅仅是姓董而已。
董承在和杨奉等人送天子东归之后,在后面二月和韩暹闹翻了,建安元年韩暹更是直接领兵进攻董承,董承因此投靠了张杨。那时那些将领还没有确定会去洛阳,但张杨却直接让董承前去修缮洛阳的宫殿以等待天子。
七月,献帝的车驾终于辗转进入洛阳,杨奉和张杨出屯护卫洛阳,董承则和韩暹留在京中守卫皇宫,并因功升任卫将军。这个时候韩暹也被汉献帝拜为大将军、司隶校尉,并得以假节钺。他居功自傲、为所欲为、扰乱朝政,加之董承一向和其不和,于是董承开始找外援,那时由于张杨虽然奉天子对于朝廷的具体事物不感兴趣,董承不得已将其放弃,忧虑之下秘召兖州牧曹操勤王。
至于当时董承是不是就找了曹操一个人,现在已经不得而知,但在历史上曹操是下手最快的,这一点确凿无疑。
董昭原来是袁绍的部下,但后来因为董昭的弟弟董访在张邈军中,被袁绍所不喜,兴平元年(194)董昭以晋见献帝为借口离开了袁绍,但在董昭去往长安的途中,被张杨留在了河内,通过张杨将印和绶带送还朝廷,被授官为骑都尉,董昭就这样成为了张杨的谋士。
那时曹操被推选为兖州牧,派使臣来见张杨,想向他借路,向西到达长安去朝拜天子,张杨未听从。
董昭于是劝告张杨说:“袁、曹现在虽然还是一家,但其趋势是不会长久联合下去的。曹操现在虽然弱些,但实在是天下的一位英雄,您应当有意和他结交。况且现在正有机缘,应该帮助他与朝廷联系,并且上表荐举他;如果这件事能够成功,那将永远是一种很深的情分。”
张杨这才向朝廷通报曹操的情况,又上表荐举。而董昭又替曹操写信给长安的各个将领如李、郭汜等人,根据他们的地位轻重不同分别表示殷勤友好。张杨也派遣使臣去见曹操。曹操赠给张杨犬马金帛,从此与西部地区有了往来。可以说董昭一开始就对曹操是很看好的。
兴平二年(195)汉献帝被李郭追到安邑,董昭跟随张杨前去救援,董昭在此被拜为议郎。
建安元年(196)曹操平定了许县一带的黄巾军,派遣使臣到河东去朝拜天子。这时汉献帝已经回到洛阳,韩暹、杨奉、董承及张杨相互间意见对立不和。
董昭因为杨奉兵马最强而缺乏外部援助,以曹操名义写信给杨奉说:“我对将军早已闻名,倾慕您的大义,所以推心置腹,赤诚相见。现在将军您将天子从艰难中解救出来,归还旧都,辅佐天子的功劳,当代没有人能和您相比,是多么的美善啊!现今群凶扰乱中原,四海不得安宁,天子朝廷