Linux : 선택한 IP 주소에 프로그램을 바인딩하는 편리한 방법이 있습니까?


11

FreeBSD 4.9에서는 다음과 같은 단일 명령으로 쉽게 수행 할 수있었습니다.

jail [-u username]  path hostname ip-number command

path가 /평소와 동일한 프로그램을 실행했지만 모든 네트워크 통신은 주어진 IP 주소 만 소스로 사용하도록 제한되었습니다. 때로는 매우 편리합니다.

이제 Linux에는 FreeBSD jail(또는 Solaris 영역) 와 매우 유사한 LXC가 있습니다. 프로그램을 실행하는 비슷한 방법을 생각할 수 있습니까?


어떤 프로그램을 사용하려고합니까? 많은 프로그램들이 할 수있는 구성 충분히 에 바인딩 할 수있는 IP를.
워렌 영

@WarrenYoung, 고마워,하지만 "많은"! = "all"
poige

특정 IP를 사용하기 위해 실행 파일을 "핸들링"하는 좋은 사용 사례는 LAN 파티의 한 컴퓨터에서 여러 게임 서버를 실행하는 것입니다. 예를 들어 밸브 게임은 포트 27015-27020에서만 브로드 캐스트되므로 IP 당 6 개의 서버 만 가질 수 있습니다. 따라서 NIC에 가상 IP를 추가 한 다음 게임 서버의 명령 줄에서 "+ ip <address>"를 지정해야 클라이언트로의 브로드 캐스트가 중지됩니다. => LAN 브라우저에 서버가 표시되지 않습니다. 따라서 "+ ip"는 작동하지 않습니다. 따라서 하나의 IP 주소 만 찾을 수있는 환경에서 각 서버를 감옥에 가두어 야합니다. 결과 : #servers + clients에 제한이 없으며 모든 서버를 볼 수 있습니다.
Timmos 2016 년

답변:


12

원하는 IP 주소 만 볼 수 있는 네트워크 네임 스페이스 내에서 프로세스를 시작하면 비슷한 결과를 얻을 수 있습니다. 예를 들어, 특정 프로그램에서만 localhost를 사용할 수 있기를 원했습니다.

먼저 네트워크 네임 스페이스를 만듭니다.

ip netns add limitednet

네임 스페이스에는 기본적으로 루프백 인터페이스가 있으므로 다음으로 가져와야합니다.

sudo ip netns exec limitednet ip link set lo up

이제 프로그램을 사용하여 실행할 ip netns exec limitednet수 있으며 루프백 인터페이스 만 볼 수 있습니다.

sudo ip netns exec limitednet ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

localhost 이외의 주소로 제한하려면 다음을 사용하여 네임 스페이스에 다른 인터페이스를 추가 할 수 있습니다.

ip link set DEVICE_NAME netns NAMESPACE

인터페이스에 둘 이상의 IP 주소가있을 수있는 경우 네임 스페이스에 단일 IP 주소를 추가하는 방법을 알아 내기 위해 조금 더 실험해야합니다.

네임 스페이스에 대한 LWN 기사 도 도움이됩니다.


그러나 네트워크 네임 스페이스에는 자체 라우팅 테이블 등이 있으므로 훨씬 더 많은 준비가 필요하다는 점을 언급 할 가치가 있습니다. 누군가가 모방하는 간단한 방법을 jail사용한다면 그것을 사용할 것입니다. ;)
poige
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.