Linux netns: 하나의 물리적 인터페이스에서 서로 다른 IP로 서로 다른 명령 실행

Linux netns: 하나의 물리적 인터페이스에서 서로 다른 IP로 서로 다른 명령 실행

나는 4개의 IPv4 주소를 가진 Debian Stretch VPS를 가지고 있습니다. 여러 프로그램을 실행하여 특정 IP 주소에 바인딩하고 싶습니다(다른 IP에서 나가는 HTTP 요청을 만들기 위해). 예를 들어 명령

~$ curl icanhazip.com

특정 다른 IP를 출력합니다.

내가 한 것:

0) 내 ISP로부터 추가 IP를 주문했습니다.

1) /etc/network/interfaces를 편집하고 추가 IP를 추가했습니다.

# Initial configuration after ordering VPS
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

allow-hotplug ens3 
iface ens3 inet static
    address 194.67.205.100
    netmask 255.255.252.0
    gateway 194.67.204.1

# Next lines were added by me
auto ens3:1
iface ens3:1 inet static
    address 185.125.216.101
    netmask 255.255.252.0

auto ens3:2
iface ens3:2 inet static
    address 185.125.216.102
    netmask 255.255.252.0

auto ens3:3
iface ens3:3 inet static
    address 185.125.216.103
    netmask 255.255.252.0

2) 그런 다음 각 IP에 대해 netns를 만들었습니다.

ip netns add ns1
ip netns add ns2
and so on

3) 새로 생성된 netns에 인터페이스를 추가하려고 시도했습니다.

# ip link set ens3:1 netns ns1

4) 그 순간 SSH 연결이 끊어집니다. VNC를 사용하여 로그인하고 실행하면 ip a전체 물리적 인터페이스 ens3과 모든 하위 인터페이스가 기본 netns에서 사라진 것을 볼 수 있습니다. 명령 출력 스크린샷

내가 뭘 잘못하고 있는 걸까요? 프로그램을 다른 소스 IP 주소에 바인딩하려면 어떻게 해야 합니까?

PS 저는 Python을 사용하여 간단한 사이트 스크레이퍼를 개발 중입니다. 구문 분석 속도를 높이고(초당 더 많은 요청 생성) 금지를 방지하려면 다른 IP가 필요합니다.

답변1

지정된 물리적 인터페이스는 하나의 네트워크 네임스페이스에만 있을 수 있으므로 각 별칭은 자체 네임스페이스에 있을 수 없습니다. 하나를 움직이기 시작하면 모든 것이 움직일 것이며 이것이 관찰을 설명합니다.

이 질문을 참조하세요:자체 netns 네임스페이스의 보조 IP그 이유에 대한 설명과 이에 기반한 솔루션 macvlan(또는 브릿지, IP 전달 또는 NAT를 수행할 수 있음)에 대해 설명합니다.

관련 정보