pppd연결이후 tcpip접속이 안되요...ㅠㅠ
안녕하세요 모뎀을 이용해서 프로그램을 하나 만들고있는 사람입니다..
evdo모뎀을 사용해서 pppd를 통해 네트워크에 접속한후 tcpip로 통신을 하는 프로그램입니다.
그런데 pppd를 스크립터로 실행시켜 네트워크 접속후 tcpip접속이 안됩니다..
장비에서 ping yahoo.co.kr을 실행시키면 핑은 나가거든요
그런데 외부에서는 장비로 핑을 보내면 타임아웃이 나와요.
ifconfig로 확인을 해보면 아래와 같이 ip는 잡은거같은데 10.153.134.240 로 핑을 보내면 응답이 없는....
ppp0 Link encap:Point-Point Protocol
inet addr:10.153.134.240 P-t-P:192.168.144.146 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:3 errors:0 dropped:0 overruns:0 frame:0
TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:66 (66.0 B) TX bytes:72 (72.0 B)
간단하게 흐름은 아래와 같습니다.
1.일단 스크립터로 pppd를 백그라운드에서 실행시키고 한 5초정도 기다린후
system("pppd call skt &");
sleep(5);
2.tcpip를 셋팅한 후
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = inet_addr(addr);
server_address.sin_port = htons(port);
3.정해진 서버에 접속을 시도하거든요
result = connect(server_sockfd, (struct sockaddr *)&server_address, client_len);
4.접속후에는 그냥 계속 소켓을 계속 읽습니다.
read_len = read(server_sockfd, rx_MSG, MAX_MSG_LEN);
대충 중요한 흐름과 코드들은 위와 같은데 실행을 하면 3번에서 계속 멈춰있습니다.
그리고 gethostbyname()을 해도 호스트가 없다고 나옵니다.
연결이 안되는 원인이 뭘까요??
pppd를 사용하면 따로 설정해줘야하는것이 있나요??
고수여러분들의 조언을 부탁드려봅니다.
몇가지확인을 해보면 의외로 간단할듯한데요??
먼저 Network접속 노드가 PPP하나뿐인가요? 아니면 다른 LAN CARD가 존재하는지가 궁금하군요...
만약존재한다면....
netstat -rn 하셔서 라우팅 테이블을 확인해보십시오.
만약 접속을 원하는곳의 IP 대역 또는 Host의 IP를 라우팅테이블에 등록해주시면 의외로 간단하게 해결될듯하네요.
그리고 외부에서 장비로 Ping가 안되는부분은 혹시 ping echo에 대해서 막아두신건 아니신지 확인해보시면 어떨까요???
댓글 달기