기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
안녕하세요 눈팅회원입니다.
몇일간 머리를 쥐어짜고 있는데 잘 안되서 고수님들께 조언 부탁드립니다.
X86 지원 보드에 네트웍 포트가 2개있습니다.
eth0에서 eth1로 소켓통신을 하려고 합니다.
그런데 커넥션이 안되네요..ㅜㅜ
eth0에서 소켓 생성, 바인드, Listen중이고
eth1에서 소켓 생성, 바인드까지는 잘되었는데
connecnt 하려고 하는부분에서 문제가 발생합니다.
그런데 재미있는건 아이피만 변경하고 다른 PC에서는 Connect가 된다는 겁니다.
connect가 안되는 보드에서 Connect부분에 perror로 메세지를 확인해보면
operation now in progress 라고 뜹니다..
OS는 우분투11.10을 올려서 쓰고 있습니다.
조언좀 부탁드리겠습니다.
몇일을 계속 이러는데도 원인조차 모르겠습니다.ㅜㅜ
네트웍구성은 일반 스위치에 연결되어 있어서 특별한 네트웍 구성은 아닙니다.
다만 제가 테스트하는 서버가 이더넷 포트가 4개인것이라 그것이 조금 특별한데
그중에 0번과 3번을 사용중이고 0번이 클라이언트 3번이 서버 포트로 되어 있습니다.
1. 서버는 C로 소켓 리스닝 상태이고, 3번포트에서 아파치 서버도 같이 돌아가고 있습니다.
2. 0번은 클라이언트 이고 소켓커넥트를 하려고 하는 중에 있습니다.
이 소켓 커넥트에서 에러가 나서 소켓 커넥트 밑에 perror로 찍어보니
Operation now in progress 메세지만 출력이 되고 소켓 커넥션이 안됩니다.
클라이언트에서 127.0.0.1로도 시도해봤으나 소켓 커넥션 에러가 납니다.
어디 자료를 구할데라도 없을까요?? ㅠㅠ
route -rn 명령을 쳐서 나오는 결과물 올려 주시기 바랍니다.
참고로, routing table이 꼬이면 절대 통신안되는데, 대체적으로 이더넷 카드 하나당 다른 망으로 연결되어 있다는 것을 기본으로 합니다.
현재 증상은 제 생각에는 lan card 두 개를 같은 망에 연결해서 나오는 증상일겁니다.
eth0와 eth1으로 현재 상황에서 따로 따로 packet을 보내지 못할겁니다.
왜냐하면 routing table에서는 자동으로 먼저 잡혀 있는 녀석으로 패킷을 보내버릴 가능성이 높습니다.
3번 포트는 외부에서 접속하는 경우는 문제 없을겁니다. 내가 쏘는게 아니라 외부서 들어온 것이라서요.
현 상황으로는 routing table을 적절하게 구성을 해야할 듯 합니다.
IP 포워딩이 막혀 있어서 안되는 현상인것 같군요. root 로 로그인 한 다음 아래처럼 해보세요.
# echo “1” > /proc/sys/net/ipv4/ip_forward
영구적으로 처리하려면 다음과 같이 하면 됩니다.
/etc/sysctl.conf 파일 수정
net.ipv4.ip_forword = 1
리부팅..