
2개의 네트워크 인터페이스(1.1.1.1 및 2.2.2.2)와 1.1.1.1이 기본으로 설정된 VPS가 있는지 궁금합니다.
eth0 = 1.1.1.1
eth0:1 = 2.2.2.2
이제 domain.com(Cloudflare를 사용하는 경우 도메인을 모릅니다)의 모든 트래픽을 라우팅하여 IP 2.2.2.2 eth0:1을 통과하려고 합니다.
예1:
잘못 실행하면
wget domain.com
2.2.2.2 eth0:1을 통과
하지만 실행하면wget google.com
1.1.1.1 eth0을 통과합니다.
ex2:
eth0을 통과하기 위해 "whatismyip.com"으로 이동하면 내 IP가 "1.1.1.1"로 표시되지만
"whatismyipaddress.com"으로 이동하면 eth0:1이 통과되므로 내 IP가 표시됩니다. "2.2.2.2"입니다
답변1
고려해야 할 몇 가지 사항이 있습니다:
Linux 라우팅은 도메인 이름을 처리하지 않습니다.
Linux에서 라우팅을 위한 많은 구성 옵션이 있지만 기본 도메인 이름을 허용하는 것은 없습니다. 결국 우리는 IP 라우팅에 대해 이야기하고 있습니다. 따라서 도메인의 DNS 레코드가 변경되면 분명히 "중단"되는 IP 주소에 대한 규칙을 정의해야 합니다.
인터페이스 환경설정
이 경우 동일한 서브넷(0.0.0.0/0, 즉 인터넷)에 대한 경로를 제공하는 2개의 인터페이스가 있습니다. 커널이 특정 인터페이스를 선호하도록 지시하려면 정책 기반 라우팅(PBR)을 적용해야 합니다.
이름에서 알 수 있듯이 정책 기반 라우팅은 사용할 인터페이스를 결정하기 위해 정책("규칙"이라고도 함)을 정의하는 방식으로 작동합니다. 정책이 없으면 커널은 대상 네트워크와 일치하는 첫 번째 경로를 선택합니다.
경로, 규칙, 테이블
커널은 경로를 사용하여 패킷 처리 방법을 결정합니다. 경로는 사용할 대상 주소와 링크(인터페이스)를 포함하는 간단한 정의입니다.
tables
경로는 정의된 정책에 따라 사용되는 테이블 에 그룹화되어 있습니다 .
(또는 규칙) 은 policy
패킷을 라우팅하기 위해 검사할 테이블을 커널에 알려줍니다. 정책 정의에는 검사할 패킷의 소스, 대상 및 라우팅 테이블이 포함됩니다.
현재 경로 및 정책 표시
현재 시스템에서 사용되는 경로를 표시하려면 다음을 실행합니다.
ip route
라우팅 테이블 의 모든 항목이 표시됩니다 main
. 다른 테이블은 를 실행하여 액세스할 수 있습니다 ip route show table <tablename>
.
현재 사용되는 정책을 표시하려면 다음을 실행합니다.
ip rule
여기에는 커널에서 사용하는 모든 정책/규칙이 나열됩니다. 하나의 규칙이 처리 중인 패킷과 일치할 때까지 위에서 아래로 반복됩니다.
예
echo "101 out1" >> /etc/iproute2/rt_tables
ip rule add from all to 3.4.5.6 table out1
ip route add default via 10.0.0.1 dev eth0 src 1.1.1.1 table out1
ip route add 10.0.0.0/8 dev eth0 src 1.1.1.1 table out1
이 명령은 새 라우팅 테이블을 생성 하고 인터넷에 액세스하기 위한 게이트웨이로 out1
추가합니다 . (대상 도메인의 실제 확인된 IP 주소로 대체되어야 함) 10.0.0.1
로 이동하는 트래픽은 지정된 장치 및 IP를 사용하여 표에 정의된 기본 게이트웨이를 통해 전송됩니다 .3.4.5.6
out1
eth0
1.1.1.1
용어에 익숙해지려면 기존 튜토리얼과 가이드를 읽어보는 것이 좋습니다. iproute2
및 를 검색하세요 linux advanced routing and traffic control
.
마지막으로 중요한 점은 변경 사항을 실제 시스템에 적용하기 전에 테스트하는 것입니다. 실수는 발생합니다. 저는 개인적으로 원격 서버 대신 VM을 프라이밍하는 것을 선호합니다.