3개의 네트워크 인터페이스가 있는 데이터 센터에 호스팅되는 컴퓨터가 있습니다.
Interface network ip address
eth0 192.168.1.0/24 192.168.1.10
eth1 192.168.2.0/24 192.168.2.10
eth2 192.168.3.0/24 192.168.3.10
내 기본 게이트웨이는 데이터 센터에서 제공하는 일부 서비스(리포지토리, ntp 등)에 액세스할 수 있는 192.168.2.1로 설정되어 있습니다.
네트워크 192.168.1.0/24에는 드래곤이 사는 외부 세계에 접근할 수 있는 게이트웨이 192.168.1.1이 있습니다. 서버를 떠나야 할 때는 정적 경로만 추가하면 됩니다. 나는 내 서버가 어디에 연결되어 있는지 알고 있기 때문에 이 설정을 좋아합니다.
이제 누구에게나 메일을 보내야 하는 메일 클라이언트(exim4)가 생겼습니다. 따라서 이상적으로는 기본 게이트웨이를 192.168.1.1로 설정해야 합니다. 이 특정 서비스에 대한 트래픽만 라우팅하는 방법이 있습니까, 아니면 단순히 서버의 네트워크 구성을 변경해야 합니까?
차이점이 있다면 Debian 8을 사용하고 있습니다.
답변1
대상 포트, 소스 포트 또는 소유자의 3가지 특성 중 하나를 기반으로 특정 게이트웨이로 라우팅하도록 방화벽(iptables)을 설정할 수 있습니다(작동하지 않을 수 있음, 아래 참조).
먼저, 특정 애플리케이션에 대한 사용자 정의 라우팅 테이블(게이트웨이 192.168.1.1)을 추가하고, 마스크된 모든 패킷을 1
해당 테이블로 리디렉션하는 규칙을 생성하고, 마스크가 있는 모든 패킷을 소스 주소 위장으로 리디렉션하는 iptables 규칙을 생성합니다. 리디렉션:
ip route add 192.168.1.0/24 dev eth0 table 1
ip route add 0/0 via 192.168.1.1 table 1
ip rule add fwmark 1 table 1
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.10
패키지 표시에는 3가지 옵션이 있습니다.
대상 포트로 리디렉션하고 exim에서 사용하는 서버 포트와 함께 PORT를 청구합니다.
iptables -t mangle -A OUTPUT -p tcp --dport PORT -j MARK --set-mark 4
소스 포트 리디렉션을 통해 하나의 소스 포트만 사용되는 경우 exim에서 로컬로 사용하는 포트가 PORT 계정에 사용됩니다.
iptables -t mangle -A OUTPUT -p tcp --sport PORT -j MARK --set-mark 4
Exim 프로세스의 PID로 OWNER를 변경하여 소유자별로 리디렉션합니다( iptables -m owner --help
다른 옵션은 참고자료 참조).
iptables -t mangle -A OUTPUT -m owner --pid-owner OWNER -j MARK --set-mark 4
소유자별 리디렉션 고려www.frozentux.net:
The pid, sid and command matching is broken in SMP kernels since they use different process lists for each processor. It might be fixed in the future however
따라서 커널에 따라 이 기능은 사용할 수 없거나 손상되었습니다(제대로 작동하지 않음).