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에서 캐시가 제거되었음에도 불구하고 요청은 여전히 ​​캐시되고 있습니다. 이제 소스와 대상 주소가 중요합니다. 이것이 바로 패킷이 항상 동일한 인터페이스를 통과하는 이유입니다.

관련 정보