From Proto-Germanic *beuną (“to be”), related to Old English būan (“to dwell”), ultimately from Proto-Indo-European *bʰew-, *bʰuH-. The past tense forms are from Proto-Germanic *wesaną (from which also wesan), from Proto-Indo-European *h₂wes-.
The verb "to be" in Old English was suppletive, and used forms from at least three different roots. There were two distinct present stems, for which wesan and bēon were the two infinitive forms. The present bēon was used to express permanent truths (the "gnomic present"), while wesan was used for the present participle and the preterite. They both shared the same past tense forms.