실제 네트워크를 중단하지 않고 오프라인 모드에서 테스트하고 싶은 프로그램이 있습니다. 이 프로그램은 여전히 유닉스 도메인 소켓과 루프백을 포함한 로컬 소켓에 연결해야합니다. 또한 루프백 을 듣고 다른 앱에서 볼 수 있어야합니다.
그러나 원격 시스템에 연결하려는 시도는 실패해야합니다.
strace
/ unshare
/ 처럼 작동 sudo
하고 인터넷 (및 LAN)이 숨겨져 있고 다른 모든 기능이 여전히 작동하는 명령을 실행 하는 유틸리티를 갖고 싶습니다 .
$ offline my-program-to-test
이 질문에는 다음과 같은 힌트 가 있습니다. 프로세스의 네트워크 액세스를 차단 하시겠습니까?
다른 사용자로 실행 한 다음 iptables를 조작하는 등의 몇 가지 제안이 unshare -n
있습니다. 그러나 두 경우 모두 유닉스 도메인 소켓과 루프백을 기본 시스템과 공유 할 수있는 명령을 알지 못합니다.이 질문에 대한 답변은 전체 네트워크 를 공유 해제하는 방법 만 알려줍니다 .
테스트중인 프로그램은 여전히 내 X 서버 및 dbus에 연결해야하며 시스템의 다른 앱에서 연결하기 위해 루프백을 청취 할 수도 있습니다.
이상적으로는 네트워크 케이블을 분리하는 것만 큼 성가신 chroots 또는 사용자 또는 VM 등을 만드는 것을 피하고 싶습니다. 즉, 질문의 요점은 어떻게 이것을 간단하게 만들 수 있습니까 sudo
?
로컬이 아닌 주소를 지정하는 네트워크 호출이 실패한다는 점을 제외하고는 프로세스를 100 % 정상적으로 실행하고 싶습니다. 동일한 uid, homedir, pwd, 오프라인을 제외한 모든 것을 동일하게 유지하는 것이 이상적입니다.
Fedora 18을 사용하고 있기 때문에 이식 불가능한 Linux 답변은 괜찮습니다 (예상조차도).
C 프로그램을 작성 하여이 문제를 해결하게되어 기쁩니다 .C 프로그램을 작성하면 C 작성과 관련된 답변이 좋습니다. 로컬 네트워크를 유지하면서 외부 네트워크 액세스를 취소하기 위해 C 프로그램이 어떤 syscall을 호출해야하는지 모르겠습니다.
"오프라인 모드"를 지원하려는 모든 개발자는이 유틸리티를 높이 평가할 것입니다.