2011-05-04 4 views
6

socat 유틸리티를 사용하여 ttyS0과 유사한 직렬 (모뎀) 장치를 통해 양방향 IP 터널을 얻을 수 있습니까? TUN 옵션을 사용하려고했지만 여전히 결과를 얻을 수 없습니다.socat : TTY를 통한 터널 IP

모든 제안 : 환영합니다

업데이트 :

PC1 :

PC2
socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.1/24,up 

: 적절한과 그 후

socat /dev/ttyUSB0,raw,echo=0,b57600,clocal TUN:192.168.1.2/24,up 

가, 내가 본 tun0 인터페이스 양쪽 끝에 주소가 있지만 하나의 fr을 핑 (ping) 할 수는 없습니다. 기타. 그 대신에, 내가 ping -c 1 192.168.1.1 리모트 socat 프로세스 출구를 가지고 데이터를 보낼 때, 그것은 파괴 된 tun0 디바이스입니다. ? 어떤 제안 ..

갱신 2 : 우리는 socat와 시리얼을 통해 TCP/IP 터널을 만들려고 할 때 프레임 문제가 있습니다

. socat의 개발자 인 Gerhard Rieger는 다음과 같이 말했습니다.

나는 당신이 옳은지 두려워합니다. 터널 데이터 그램 소켓 작동 및 - 운 - 또한 파이프 오버. 그러나 직렬 회선을 통해 패킷 경계가 일 수 있으며, tun 인터페이스에서 데이터를 으로 보낼 때 치명적일 수 있습니다.

이제 socat 기반 솔루션을 제공 할 수 없습니다. , 죄송합니다. 그러나 나중에 버전 2 릴리스에서 일부 프레임을 통합하려고 시도 할 것입니다.

+1

당신은 PPP (and pppd)가 이것을하기 위해 설계된 것을 알고 있습니다 ... – ysdx

+0

@ysdx 예,하지만 pppd는 다른 문제를 해결합니다. –

답변

7

하 - 하, 나는 작동하지만 몇 가지 마법 :)있을 필요가

그래서, 첫번째와 피어 구성 : 2에 그런

PC1: 
1) slattach -L -s 57600 -p slip /dev/ttyUSB0 & 
2) ifconfig sl0 up 
3) socat TUN:192.168.1.1/24,up INTERFACE:sl0 & 

... 뭔가를

PC2: 
1) slattach -L -s 57600 -p slip /dev/ttyUSB0 & 
2) ifconfig sl0 up 
3) socat TUN:192.168.1.2/24,up INTERFACE:sl0 & 

을 그리고 지금, 당신은 성공적으로 서로 하나의 PC Ping 할 수 있습니다 : 피어

PC1: 
1) ping -c 5 192.168.1.2 

PING 192.168.1.2 (192.168.1.2) 56(84) bytes of data. 
64 bytes from 192.168.1.2: icmp_req=1 ttl=64 time=348 ms 
64 bytes from 192.168.1.2: icmp_req=2 ttl=64 time=551 ms 
64 bytes from 192.168.1.2: icmp_req=3 ttl=64 time=557 ms 
64 bytes from 192.168.1.2: icmp_req=4 ttl=64 time=549 ms 
64 bytes from 192.168.1.2: icmp_req=5 ttl=64 time=348 ms 

--- 192.168.1.2 ping statistics --- 
5 packets transmitted, 5 received, 0% packet loss, time 4003ms 
rtt min/avg/max/mdev = 348.116/471.143/557.128/100.177 ms 

slattach 사용으로 인해 조금 까다 롭지 만 사실 다른 솔루션에서는 슬립과 같은 것을 사용하여 직렬 회선을 구성해야합니다. 예를 들어, PPP는 HDLC와 유사한 프레임을 사용합니다.

+0

slattach를 사용할 때 SLIP 인터페이스에 주소를 구성하는 것이 어떻습니까? TTY 내에서 터널링을 시도하는 순간을 빠르고 일시적인 것으로 보지만이 해결책은 아닙니다. – pilona

3

내가 시도한 바를 토대로, 터널을 설정하기 위해 socat이 필요하지 않습니다. 그냥 다음을 수행 할 수

PC1: 
1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0 
2, sudo ifconfig sl0 10.0.0.1/24 up 
3, sudo route add default gw 10.0.0.254 sl0 

PC2: 
1, sudo slattach -s 19200 -p slip -dL /dev/ttyUSB0 
2, sudo ifconfig sl0 10.0.0.2/24 up 
3, sudo route add default gw 10.0.0.254 sl0 

를 설정 후, 나는 그 반대의 경우도 마찬가지 PC1에서 PC2를 ping하고 있습니다.

또 다른 사전 조건이 있습니다. Linux 커널에 slip 모듈이로드되어 있어야합니다.