예를 들어 NetworkManager를 사용하여 단일 인터페이스에 여러 IP 주소를 설정할 수 있습니다.
다른 IP를 사용하여 외부 PC에 어떻게 연결하나요?
예를 들어, IP 주소가 8개( 10.7.4.x
, 10.7.4.x+1
, 10.7.4.x+2
, ...)이고 다른 IP를 사용하여 각 대상 주소에 연결하려는 경우 임의 IP 또는 순차 모드(대상 IP 모드 8 = 0인 경우, 그런 다음 을 사용하고 x
, 대상 모드 8 = 1일 때 을 사용하고 x+1
, 등등)
답변1
Linux에서는 나가는 연결에 대한 소스 주소 선택을 라우팅 테이블을 통해 제어할 수 있습니다.
ip route add 10.11.12.0/24 via 10.7.4.1 src 10.7.4.200
특정 고정 IP 범위에 대해 다른 소스 주소만 사용해야 하는 경우에는 이 방법으로 충분합니다. 그러나 Linux 넷필터( )와 정책 라우팅( ) iptables
의 기능을 결합하면 ip rule
소스 주소를 동적으로 선택할 수 있습니다.
기본 프로세스는 다음과 같습니다.
PREROUTING
체인의 패킷에 적절한 태그를 설정합니다mangle
.- 서로 다른 태그( )가 있는 패킷에는 서로 다른 IP 라우팅 테이블을 사용합니다
ip rule add fwmark X table Y
. - 각 라우팅 테이블의
src
패킷에 필요한 주소를 사용합니다.
"mod 4"로 설정된 대상 IP를 기반으로 패킷을 표시하기 위한 넷필터 설정은 다음과 같습니다.
iptables -A PREROUTING -t mangle -j CONNMARK --restore-mark
iptables -A PREROUTING -t mangle -m mark --mark 0x0 -d 0.0.0.0/0.0.0.3 \
-j MARK --set-mark 1
iptables -A PREROUTING -t mangle -m mark --mark 0x0 -d 0.0.0.1/0.0.0.3 \
-j MARK --set-mark 2
iptables -A PREROUTING -t mangle -m mark --mark 0x0 -d 0.0.0.2/0.0.0.3 \
-j MARK --set-mark 3
iptables -A PREROUTING -t mangle -m mark --mark 0x0 -d 0.0.0.3/0.0.0.3 \
-j MARK --set-mark 4
iptables -A POSTROUTING -t mangle -j CONNMARK --save-mark
CONNMARK
(이 특별한 경우 에는 다른 표시 명령이 동일한 연결의 모든 패킷에 대해 동일한 결과를 제공하므로 두 명령을 모두 생략할 수 있습니다 . 그러나 소스 주소의 순환 사용과 같은 보다 복잡한 경우에는 이러한 명령이 필요합니다. 연결의 모든 패킷이 동일한 경로를 사용하는지 확인하십시오.
IP 라우팅 설정은 다음과 같습니다.
ip route add default via 10.7.4.1 src 10.7.4.200 table 1
ip route add default via 10.7.4.1 src 10.7.4.201 table 2
ip route add default via 10.7.4.1 src 10.7.4.202 table 3
ip route add default via 10.7.4.1 src 10.7.4.203 table 4
ip rule add fwmark 1 pref 1 table 1
ip rule add fwmark 2 pref 2 table 2
ip rule add fwmark 3 pref 3 table 3
ip rule add fwmark 4 pref 4 table 4
답변2
나가는 연결을 설정하는 데 사용되는 애플리케이션이나 도구는 가능한 소스 IP 주소가 여러 개 있다는 것을 이해하고 필요한 모든 주소에 명시적으로 바인딩해야 합니다.
예를 들어 ssh
pass 옵션에는 이 기능이 있으므로 -b
이렇게 하면 ssh -b 10.7.4.201 ...
해당 주소가 소스 주소로 사용됩니다.
예를 들어 라운드 로빈 방식으로 가능한 소스 주소를 자동으로 사용하는 것은 불가능합니다.
-b 플래그는 무엇입니까?
-b bind_address
Use bind_address on the local machine as the source address of
the connection. Only useful on systems with more than one
address.