나는 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를 수행할 수 있음)에 대해 설명합니다.