2개의 ISP 및 다중 경로 게이트웨이 구성

2개의 ISP 및 다중 경로 게이트웨이 구성

두 개의 서로 다른 ISP가 있습니다. 이러한 공급자에게 패킷을 배포하기 위해 일종의 로드 밸런싱 설정을 설정하고 싶습니다. 다른 라우팅 테이블을 사용하여 이 작업을 수행할 수 있다는 것을 알고 있지만 "다중 경로 게이트웨이"라는 것을 사용하고 싶습니다.

파일에 두 개의 인터페이스를 구성했습니다 /etc/network/interfaces. 두 연결 모두 독립적으로 작동합니다. 기본 게이트웨이를 다음으로 교체했습니다.

# ip route add default \
    nexthop via 192.168.1.1 dev bond0 weight 1 \
    nexthop via 10.143.105.17 dev wwan0 weight 1

iptables두 인터페이스 모두에 가짜 대상을 추가했습니다.

iptables -t nat -A POSTROUTING -o wwan0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o bond0 -j MASQUERADE

또한 다음을 통해 (부분) 역방향 경로 필터링을 활성화했습니다 sysctl.

net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2

이 설정이 작동합니다. 패킷(연결)은 두 인터페이스를 통해 전송됩니다. 제가 이해하지 못하는 문제가 딱 하나 있습니다.

다음을 사용하여 내 IP 주소를 확인하고 싶을 때:

$ curl text.whatisyourip.org
$ curl eko.one.pl/host.php

두 경우 모두 IP 주소가 다르기 때문에 메커니즘이 잘 작동합니다. 에서도 볼 수 있습니다 wireshark. 그러나 예를 들어 위의 첫 번째 도메인에 여러 요청을 보내려고 하면 항상 동일한 IP 주소가 응답됩니다. 따라서 특정 IP 주소로 향하는 패킷은 항상 동일한 인터페이스를 통과하는 것처럼 보입니다. 나는 단지 이유를 알고 싶습니다. 이전 요청의 대상 IP 주소를 기억하고 동일한 인터페이스를 통해 동일한 주소로 다음 요청을 보내는 메커니즘이 있습니까?

답변1

이 문제를 성공적으로 해결했습니다. 존재하다이 링크다음 내용을 읽을 수 있습니다.

IPv4: 해시 기반 다중 경로 라우팅. 3.6에서 경로 캐시가 제거되었을 때 IPv4 다중 경로 알고리즘은 다소 대상 기반에서 패킷별 준 무작위 스케줄링으로 변경되었습니다. 이로 인해 패킷 재정렬의 위험이 증가하고 애니캐스트 서비스에서 다중 경로를 사용할 수 없게 됩니다. 이번 릴리스에서는 다중 경로 라우팅 구현이 제출된 해시를 병합하는 소스 및 대상 주소를 기반으로 하는 흐름 기반 로드 밸런싱으로 대체되었습니다.

따라서 커널 3.6에서 캐시가 제거되더라도 요청은 계속 캐시됩니다. 이제 소스 및 대상 주소가 중요합니다. 이것이 바로 패킷이 항상 동일한 인터페이스를 통과하는 이유입니다.

관련 정보