특정 프로세스의 특정 인터페이스를 통해 트래픽을 라우팅하는 방법

특정 프로세스의 특정 인터페이스를 통해 트래픽을 라우팅하는 방법

15분마다 cron에서 실행되는 스크립트가 있습니다. 이 스크립트는 내 DNS 서버를 핑하여 동적으로 변경되는 IP를 업데이트하도록 설계되었습니다. 이 스크립트 wlaneth0.

eth0그러나 다른 프로세스는 인터넷에 대한 기본 인터페이스 로 사용해야 합니다 .

다른 프로세스를 방해하지 않고 특정 프로세스에 대해서만 이 작업을 수행하려면 어떻게 해야 합니까? 표준 출력을 지시하는 것과 같은 방식으로 인터페이스를 통해 트래픽을 지시하는 방법이 있습니까? 좋다 ls -al > /dev/tty2'. chroot샌드박스 환경을 제공해 주시면 도와주실 수 있나요 ?

답변1

해결책은 고급 라우팅에서 사용할 수 있도록 Netfilter 패킷 표시를 설정하는 것입니다. 프로세스 ID별 매칭은 불가능하지만, Netfilter에서는 프로세스 UID 또는 GID별 매칭이 가능합니다. 이 경우에는 새 시스템 사용자(특히 이 작업의 경우)를 만드는 것이 가장 쉬운 해결 방법인 것 같습니다.

iptables -t mangle -A OUTPUT -m owner --uid-owner wlanping -j MARK --set-mark 42

/etc/iproute2/rt_tables에 새 라우팅 테이블(forecewlan)을 생성하고 wlan 게이트웨이를 기본 게이트웨이로 선택합니다.

ip route add default via $WLAN_GATEWAY

그리고 다음 태그가 있는 패킷에 대해 이 라우팅 테이블을 강제로 사용합니다.

ip rule add fwmark 42 table forcewlan

어쩌면 기본 라우팅 테이블에서 해당 항목을 복사해야 할 수도 있습니다.

192.168.0.0/24 dev wlan0  proto kernel  scope link  src 192.168.0.100

관련 정보