Linux에서 PBR (Policy Base Routing)
마찬가지로 리눅스에서도 하고 싶습니다.
정책 베이스 라우팅이란, 통상의 라우팅과 달리, 호스트내에서 완결시키는 라우팅 기법.
특정 동작시 특정 라우팅 테이블을 사용합니다. 같은 느낌입니다. (설명 어렵다...)
예를 들면...
등등. . .
키모는 멀티 홈 환경인 것.
예) 특정 포트에 액세스 할 때 게이트웨이를 변경하고 싶습니다.
어떤 상황을 생각할 수 있습니까?
· 통상은 A 회선을 사용하고 있지만, http 액세스의 경우는 B 회선을 사용하고 싶다.
이번 환경은
・호스트에 외선이 3개 꽂혀 있고(192.168.0.2,192.168.1.2,192.168.2.2), 그 앞에 게이트웨이(192.168.0.1,192.168.1.1,192.168.2.1)가 각각 있다고 한다.
· 호스트에서 12.34.56.78의 http 액세스는 게이트웨이 A에서. 12.34.56.78의 https 액세스는 게이트웨이 B에서. 12.34.56.78의 ssh 액세스는 게이트웨이 C에서. 각각 액세스하고 싶습니다.
이런 일을 이루기 위해 필요한 리눅스의 기능은
* iproute2
* iptables
됩니다.
iptables에서 특정 포트로 향하는 패킷을 표시(iptables), 표시가 있는 패킷은 지정된 라우팅 테이블을 사용한다(iproute2).
1.iptables를 표하기
패킷을 표시하려면 iptables의 mangle 테이블을 사용합니다.
# iptables -t mangle -A OUTPUT -p tcp --dport 80 -j MARK --set-mark 1 ←tcp80に向かって出ていくパケットに「1」をマークする
# iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 2 ←tcp443に向かって出ていくパケットに「2」をマークする
# iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 3 ←tcp22に向かって出ていくパケットに「3」をマークする
2. iproute2에 규칙 추가
표시 된 패킷에 대한 규칙을 지정합니다.
# ip rule add fwmark 1 table 10 ←「1」をマークされているパケットは「table10」を参照する
# ip rule add fwmark 2 table 20 ←「2」をマークされているパケットは「table20」を参照する
# ip rule add fwmark 3 table 30 ←「3」をマークされているパケットは「table30」を参照する
또한 게이트웨이를 대상으로하는 인터페이스가 여러 개 있기 때문에 반환 패킷에도 지정이 포함됩니다.
# ip rule add from 192.168.0.2 table 10 ←「192.168.0.2」に入ってきたパケットは「table10」を参照する
# ip rule add from 192.168.1.2 table 20 ←「192.168.1.2」に入ってきたパケットは「table20」を参照する
# ip rule add from 192.168.2.2 table 30 ←「192.168.2.2」に入ってきたパケットは「table30」を参照する
3. iproute2에 경로 추가
참조할 루트 테이블을 만듭니다.
# ip route add default dev eth1 via 192.168.0.1 table 10 ←「table10」のデフォルトゲートウェイはeth1の先の192.168.0.1とする
# ip route add default dev eth2 via 192.168.1.1 table 20 ←「table20」のデフォルトゲートウェイはeth2の先の192.168.1.1とする
# ip route add default dev eth3 via 192.168.2.1 table 30 ←「table30」のデフォルトゲートウェイはeth3の先の192.168.2.1とする
각 테이블에 로컬 링크를 추가하는 것이 좋으므로 적절하게 대응합시다.
로컬 링크를 작성하는 방법은
# ip route show table main
를 참조하고 default 의외를 적용하는 것이 좋습니다!
원라이너라면 이런 느낌
# ip route show table main | grep -Ev ^default | while read ROUTE ; do ip route add table "table名" $ROUTE; done
이상으로 설정은 끝. 실제로 검증해 보자.
문제가 없으면
/etc/rc.local
또는 무언가 시작 스크립트에 추가하는 것이 좋습니다.
Reference
이 문제에 관하여(Linux에서 PBR (Policy Base Routing)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/MT-07/items/fa7f34a5dec34b6a0757텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)