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

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

FreeBSD 4.9에서는 단 하나의 명령으로 이 작업을 쉽게 수행할 수 있습니다.

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

경로가 이면 /평소와 동일한 프로그램을 실행하지만 모든 네트워크 트래픽은 지정된 IP 주소만 소스로 사용하도록 제한됩니다. 때로는 매우 편리합니다.

이제 Linux에 LXC가 있으므로 jailFreeBSD(또는 Solaris)와 매우 유사해 보입니다. 프로그램을 실행하는 유사한 방법을 생각할 수 있습니까?

답변1

내에서 프로세스를 시작합니다.네트워크 네임스페이스원하는 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 기사매우 도움이 됩니다.

관련 정보