게이트웨이가 여러 개 있고 대상에 따라 다른 게이트웨이에서 일부 트래픽을 라우팅하려고 합니다. iproute2와 iptables 규칙을 함께 사용해야 할 것 같은데 어디서부터 시작해야 할지 모르겠습니다.
누구든지 예를 들어 줄 수 있습니까?
답변1
당신은 아마도 당신이 원하는 것을 할 수 있습니다 ip route
:
ip route add 8.8.8.8 via 10.0.0.1 dev enp3s8
ip route add 10.0.0.0/24 dev eth0
첫 번째는 ip route add
단일 IP 주소를 보여주며 지정된 이더넷 인터페이스(ep3s8)를 다음 홉 라우터 10.0.0.1로 보냅니다.
두 번째 경로는 전체 네트워크 10.xyz에 대한 것이며 지정된 이더넷 카드 eth0으로 전송됩니다. 이것은 "로컬 네트워크"이며 다음 홉 라우터가 없으며 모두 동일한 논리 라인에 있습니다.
하지만 어떤 일을 하기 전에 먼저 읽어보고 싶을 것입니다 man ip-route
. 또한 재부팅할 준비를 하고 원격으로 재부팅하지 마세요. 원격 액세스를 종료하는 잘못된 경로를 쉽게 만들 수 있습니다. 저는 이 마지막 조언에서 경험의 목소리를 대변합니다.
답변2
policy-based routing
또는 에 대해 문의하셨습니다 source-based routing
. 가지다좋은 소개저자: David Schwartz, 같은 웹사이트.
깔끔한 작은 프로그램도 있다는 점을 지적하고 싶습니다.여기에서 찾을 수 있습니다, 특정 애플리케이션을 특정 인터페이스에 바인딩할 수 있습니다. 물론 이는 원하는 수신 주소에 바인딩할 수 있는 옵션이 있는 openssh와 같은 애플리케이션의 경우 쉽습니다. 하지만 이 라이브러리를 사용하면 해당 옵션이 없는 애플리케이션(예: Firefox)도 지정된 IP 주소에 바인딩할 수 있습니다.
이렇게 하면 모든 애플리케이션에 대해 별도의 라우팅 테이블을 가질지, 아니면 애플리케이션별로 동일한 사양을 재정의할지 선택할 수 있습니다.
답변3
소스 베이스 라우팅에 대해 읽어보기 좋은 곳은 다음과 같습니다.Linux 고급 라우팅 및 트래픽 제어.
명령줄에서 설명서를 읽을 수도 있습니다.
man ip rule
man ip route
man ip-rule
참고: 일부 시스템에서는 및 를 수행해야 할 수도 있습니다 man ip-route
. 또는 온라인으로 읽을 수도 있습니다. 규칙 그리고 노선. 경고: 온라인 버전은 그렇지 않을 수 있습니다정확히 똑같다
시스템 버전에 맞게.
일반적으로 규칙을 추가해야 합니다. 예제에서는 인터페이스(eth1)를 지정했습니다. 이는 선택 사항이므로 생략할 수 있습니다.
# ip rule add dev eth1 to 170.10.0.10 table 2 priority 20000
분해:
dev eth1
– 패킷을 보내는 데 사용될 장치to 170.10.0.10
- 목적지table 2
– 경로를 추가해야 하는 테이블priority 20000
– 규칙의 우선순위
다음 명령을 실행하여 규칙을 볼 수 있습니다.
# ip ru sh
0: from all lookup local
20000: from all to 170.10.0.10 iif eth1 lookup 2
32766: from all lookup main
32767: from all lookup default
다음으로 경로를 추가하고 경로가 추가될 테이블을 지정해야 합니다. 이 경우에는 표 2가 됩니다.
# ip route add table 2 via 170.10.0.1 default
경로를 보려면 다음을 실행해야 합니다.
# ip route show ta 2