15분마다 cron에서 실행되는 스크립트가 있습니다. 이 스크립트는 내 DNS 서버를 핑하여 동적으로 변경되는 IP를 업데이트하도록 설계되었습니다. 이 스크립트 wlan
가 eth0
.
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