Shikhar Dhawan became the first India batsman to score a Test century before lunch, while Murali Vijay also made a hundred, but Afghanistan fought back well on a historic rain-affected day one in Bengaluru.

Dhawan showed no mercy on the Afghanistan bowlers, bludgeoning 107 from only 96 balls in a baptism of fire for the minnows at M. Chinnaswamy Stadium.

Vijay scored a classy 105 and there was a half-century for KL Rahul as the top-ranked side - captained by Ajinkya Rahane in the absence of Virat Kohli - piled on the runs before stoppages due to the weather.

The impressive Yamin Ahmadzai (2-32) became his country's first Test wicket-taker and the debutants struck four times in the final session, leaving India on 347-6 at the close.

Dhawan hit three sixes and 19 fours to join Victor Trumper, Charles Macartney, Donald Bradman, Majid Khan and David Warner in reaching three figures in an opening session of a Test, but Afghanistan reacted well following such an ominous start.

The clean-striking Dhawan tormented Afghanistan with a brutal onslaught, though he had a stroke of luck when appearing to edge a Wafadar delivery, only for captain Asghar Stanikzai to opt against calling for a review.

Rashid Khan was dispatched for 14 off three balls as Dhawan continued to enjoy himself, racing to a seventh Test century in only 87 balls, but he was on his way after Nabi held on in the slips following a parry from Rahmat Shah when Ahmadzai drew an edge.

After moving to 99 prior to a break for rain, Vijay returned to complete his 12th hundred - which included a six and 15 fours - in the longest format. 

Afghanistan appeared to be revitalised after another rain interval, however, with Wafadar trapping Vijay leg before and Rahul (54) chopping on to a delivery from Ahmadzai when he looked well set.

Rashid made Rahane his first Test scalp before Cheteshwar Pujara and Dinesh Karthik fell for 35 and four respectively, giving Afghanistan a positive finish to proceedings.