게이트웨이 2개가 포함된 네트워크 인터페이스 1개

게이트웨이 2개가 포함된 네트워크 인터페이스 1개

이더넷 케이블을 통해 2개의 라우터가 연결되어 있습니다. 보조 라우터에는 DHCP 서버가 비활성화되어 있으며 IP 주소는 192.168.1.2입니다. 두 라우터 모두 서로 다른 인터넷을 사용합니다. 더 낮은 메트릭을 사용하여 다른 기본 게이트웨이를 생성하면 두 번째 네트워크를 기본 네트워크로 사용할 수 있습니다.

ip route add default via 192.168.1.2 dev eno1 metric 10

예상대로 작동합니다.

이제 두 네트워크를 동시에 사용하려고 합니다. Linux 사용자를 생성하고 모든 사용자 트래픽을 보조 게이트웨이를 통해 보낼 수 있습니까? 다음 명령을 시도했습니다.

useradd kreator
ip rule add fwmark 42 table 42
ip route add default via 192.168.1.2 dev eno1 table 42 metric 200
iptables -t mangle -A OUTPUT -m owner --uid-owner kreator -j MARK --set-mark 42
iptables -t nat -A POSTROUTING -o eno1 -m mark --mark 42 -j SNAT --to-source 192.168.1.2

그런 다음 실행했는데 sudo -u kreator ping google.com아무것도 기록되지 않았습니다. 내가 무엇을 놓치고 있나요?

저는 Arch Linux를 사용하고 있으며 네트워크 관리자는 NetworkManager 데몬입니다.

답변1

의견에 따르면 접근 방식은 견고했습니다.

  1. 42 의 패킷에 대한 라우팅 결정을 위해 표 42를 보도록 OS에 지시합니다 fwmark.ip rule add fwmark 42 table 42
  2. 해당 테이블에 대체 기본 경로를 추가합니다.ip route add default via 192.168.1.2 dev eno1 table 42 metric 200
  3. 다음을 사용하여 사용자가 소유한 프로세스에서 발생하는 mangle모든 아웃바운드 패킷(체인 내)을 표 에 표시합니다 .OUTPUTkreator42iptables -t mangle -A OUTPUT -m owner --uid-owner kreator -j MARK --set-mark 42

이 시점에서 사용자로부터 시작된 패킷은 kreator원하는 대로 표 42의 대체 기본 경로로 표시되고 라우팅됩니다. 체인을 조정하는 추가 iptables명령은 POSTROUTING소스 IP를 보조 라우터의 IP로 변경하고 라우터가 패킷을 삭제하게 하므로 오류가 발생했습니다.

관련 정보