고구려 멸망 후 여진족(女眞族)의 소굴이 되었다. 991년(성종 10)경 거란(契丹)이 압록강가에 위구성(威寇城) · 진화성(振化城)과 함께 이 성을 다시 쌓아 여진이 송나라와 교통하는 것을 막는 한편, 고려 서북면에 압력을 가하였다. 그 뒤 고려와 거란 사이를 왕래하는 요지가 되었다.
『고려사(高麗史)』 악지(樂志)를 보면, “내원성은 정주(靜州)에 있다. 즉 수중지지(水中之地)이다. 적인(狄人)이 내투(來投)하면 이곳에 두었는데, (따라서) 그 성을 내원(來遠)이라 이름하였다. 노래로 기록한다.”라는 내용이 전한다. 이를 통해, 내원성은 정주 가까운 곳에 위치하고 있으며, ‘물 가운데 땅(수중지지)’라는 표현을 통해 섬으로 이해되고 있다. 한진서는 『해동역사속(海東繹史續)』에서 “정주는 지금의 평안북도 의주이다. 그런즉 압록강 가운데 있는 검동도(黔同島)나 위화도(威化島) 등이 생각건대 옛 내원현인 듯하다.”고 하였으며, 정약용도 “내원성은 물 안에 있음은 명확하다[來遠城明在水中].”라고 하여 압록강 안의 섬이라는 견해에 힘을 실어 줬다. 일본인 학자들도 한진서의 견해를 받아들이면서, 정주가 의주 부근에 위치하고 있는 ‘수중지지’라는 점과 조선시대 사행로가 지나가는 길목에 위치한 점을 들어 사행로상에 위치한 검동도로 비정하였다. 이후 이 견해는 별 이견 없이 지금까지 받아들여지고 있다.
1012년(현종 3) 거란에 사신으로 갔던 형부시랑 김은부(金殷傅)가 돌아오는 길에 이 성에 이르렀다가 거란의 사주를 받은 여진에게 납치된 일이 있었다. 이듬해 고려에서 이 성에 서두공봉관(西頭供奉官)을 보내어 외교를 닦았고, 1032년(덕종 1)에는 거란의 사신이 이 성에 이르러 입국하려 하는 것을 고려에서 거절한 일이 있었다. 1035년(정종 1) 거란의 내원성사(來遠城使)가 흥화진(興化鎭)에 첩(牒)을 보내어 조공을 독촉하였다. 1055년(문종 9) 이 성의 군사가 고려의 성 근처에 궁구문(弓口門)을 설치하고 정사(亭舍)를 지으려 하자, 고려에서 거란의 동경유수(東京留守: 遼陽)에게 국서를 보내 항의하였다. 이러한 것을 볼 때, 당시 내원성은 군사상뿐만 아니라 외교상으로도 요지였다.
1116년(예종 11) 내원성이 포주성(抱州城: 의주)과 함께 금나라의 공격을 받게 되었다. 이듬해 3월 요나라 장군이 고려에게 내원성과 포주성을 접수하라는 공문을 보내고 해로로 철수하자, 고려는 두 성을 점령하였다. 그리고 포주를 고쳐 의주방어사(義州防禦使)를 삼고, 압록강으로서 경계를 삼았다. 금나라가 요나라의 내원성과 포주성을 공격한 것은 고려와 요나라 사이의 연락을 차단하기 위한 것으로 보인다. 그리고 고려가 두 성을 접수, 점령하는 것을 금나라가 쉽게 승인한 것은 고려의 감정을 상하지 않게 하기 위한 것으로 보인다. 그 뒤 내원성은 금나라가 점유해, 1183년(명종 13) 이 성을 내원군(來遠軍)으로 고쳤음을 고려에 통보해 왔고, 1217년(고종 4) 내원성에서 고려의 영덕성(寧德城: 의주)에 첩(牒)을 보내어 동진국(東眞國)의 포선만노(蒲鮮萬奴)와 거란의 군대를 서로 방어할 것을 약속해 오기도 하였다. 이와 같이 내원성은 고려와 금나라 사이에서도 국방상 · 외교상의 요지였다.
내원성은 고려와 거란이 만나는 최전방에 위치한 요충지로, 고려와 거란 양국의 갈등이 고조될 때는 고려를 침입하기 위한 전진 기지 역할을 담당했으며, 평화 시기에는 양국의 문서를 주고받는 통로 역할을 담당하였다.