인터넷에 액세스하기 위한 두 개의 게이트웨이가 있고 어떻게든 로드 밸런싱을 하고 싶습니다. 지금까지는 작동하지만 일부 연결이나 서비스에서는 영구 게이트웨이 IP를 사용해야 하므로 클라이언트가 연결된 후에는 이를 변경해서는 안 됩니다. 대상 게이트웨이. , 현재 구현은 라운드 로빈 같은 것 같습니다.
이게 내 아이프로트야
...
...
default
nexthop via 192.168.1.1 dev eth0 weight 1
nexthop via 192.168.1.2 dev eth0 weight 1
이제 어떻게든 문제를 해결하고 싶습니다. 예를 들어 소스 포트를 사용하여 클라이언트가 사용할 게이트웨이가 미리 결정되어 있습니다. 소스 포트가 짝수이면 gw.1을 사용하고 홀수이면 gw.1을 사용하여 ip Route를 사용하여 이 작업을 수행?
*여기에는 아웃바운드 인터페이스가 하나만 있습니다(eth0).
답변1
태그가 지정된 패킷과 함께 정책 라우팅을 사용합니다. 어떤 구성 형식인지는 잘 모르겠지만 배포판에서 확인해야 합니다.
명령줄에서 다음과 같아야 합니다(테스트되지 않았지만 작동해야 함).
iptables -A PREROUTING -t mangle -p tcp --dport 22 --set-mark 0x1 -j CONNMARK
echo "200 ssh" >> /etc/iproute2/rt_tables
ip rule add fwmark 1 table ssh
ip route add default dev eth0 via 192.168.1.2 table ssh
편집하다:철사
echo "200 ssh" >> /etc/iproute2/rt_tables
"ssh"라는 이름으로 라우팅 테이블 200의 이름을 지정합니다. 부츠 사이에 보관됩니다.