나는 다른 도시에 있는 방에 Linux PC(Debian Squeeze)를 가지고 있습니다. (제가 있는 곳에서는 이 PC에 물리적으로 접근할 수 없습니다.)
이 컴퓨터는 인터넷 박스를 사용하여 인터넷에 연결됩니다. 포트 22를 통해 SSH를 사용하여 이 PC에 연결할 수 있습니다(실제로 원격 상자의 포트 XXXX에서 PC의 포트 22로 NAT가 있습니다).
동료 중 한 명이 3G 키를 연결했습니다. 그런 다음 사용합니다.사키스 스크립트이 컴퓨터를 3G 네트워크에 연결했는데 SSH 연결이 중단되었습니다(파이프 파손). 내 동료는 여전히 SSH를 사용하여 로컬 네트워크에서 PC에 액세스할 수 있습니다.
3G 연결이 외부 SSH 연결을 중지하는 이유는 무엇입니까? 이 문제를 해결하는 방법(3G 연결을 설정하는 동안 SSH 연결을 열어두기)?
편집: 추가 정보
3G 스크립트가 시작되기 전에 NAT를 사용하여 연결합니다.
eth0의 IP는 변경되지 않았습니다(연결에 사용하는 인터페이스).
3G 연결 후 새 인터페이스 추가:ppp0 Link encap:Point-to-Point Protocol
IP 라우팅(3G 연결 전)
172.16.210.0/24 dev br0 proto kernel scope link src 172.16.210.254
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.50
default via 192.168.0.254 dev eth0
IP 라우팅(3G 연결 후)
10.64.64.64 dev ppp0 proto kernel scope link src 10.99.122.183
172.16.210.0/24 dev br0 proto kernel scope link src 172.16.210.254
192.168.0.0/24 dev eth0 proto kernel scope link src 192.168.0.50
default via 10.64.64.64 dev ppp0
답변1
스크립트를 실행한 후 기본 경로는 다른 인터페이스를 가리킵니다. SSH 연결의 데이터가 그곳으로 전송되었지만 주소가 잘못되었거나 3G 네트워크에서 관련 없는 주소 및/또는 다른 주소로 NAT 처리되었기 때문에 삭제되었습니다.
해결 방법: 명시적 라우팅을 추가합니다. $SSH_CLIENT 변수는 연결이 어디서 오는지 알려줍니다.
# set $SSH_CLIENT
# ip route replace $1 via 192.168.0.254 dev eth0
문제가 해결될 것입니다.