오랜 시간 동안 조사하고 여러 번 시도한 후에도 특정 포트의 트래픽이 openvpn 터널을 통과하지 못하게 하는 방법을 여전히 알 수 없습니다. 내 설정은 다음과 같습니다.
(enp0s25)<ovpn server>(tun0) <--> (tun0)<ovpn client>(enp2s0) <--> app connecting on port 10011
push "redirect-gateway def1 bypass-dhcp"
ovpn 서버는 모든 트래픽이 터널을 통해 리디렉션되도록 라우팅 설정을 클라이언트에 푸시하도록 구성되어 있습니다 . 이는 정확히 내가 원하고 잘 작동하는 것입니다. 단, tcp 포트 10011이 터널을 통과하지 않기를 원한다는 점은...
커널 라우팅 테이블의 주요 내용은 다음과 같습니다 <ovpn client>
.
0.0.0.0/1 via 192.168.88.9 dev tun0
default via 192.168.0.1 dev enp2s0
128.0.0.0/1 via 192.168.88.9 dev tun0 # not sure why it's there..
192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.29
192.168.88.0/24 via 192.168.88.9 dev tun0
192.168.88.9 dev tun0 proto kernel scope link src 192.168.88.10
내 최근 시도는 다음과 같습니다 <ovpn client>
.
openvpn 라우팅 테이블 정의
default via 192.168.0.1 dev enp2s0 192.168.0.0/24 dev enp2s0 proto kernel scope link src 192.168.0.29
규칙 정의
1000: from all fwmark 0x64 lookup openvpn
다음 iptables mangle 규칙을 정의하십시오.
-A OUTPUT -p tcp -m tcp --sport 10011 -j MARK --set-xmark 0x64/0xffffffff -A OUTPUT -p tcp -m tcp --sport 10011 -j LOG --log-prefix "(OUTPUT) fwmark 100: "
아이디어(아마도 나쁠 수도 있음)는 라우팅 테이블 항목으로 인해 <ovpn client> --> app connecting on port 10011
트래픽을 앞뒤로 터널링하지 않고 0.0.0.0/1 via 192.168.88.9 dev tun0
대신 매우 기본적인 "로컬 네트워크" 라우팅 테이블인 라우팅 테이블 openvpn을 사용하는 것입니다.
나는 mangle OUTPUT을 사용했는데, 이는 프로세스가 포트 10011에서 데이터를 보낸 후 POSTROUTING 전에 오기 때문에 이것이 사용하기에 올바른 체인이라고 생각합니다.
openvpn을 시작 <ovpn client>
하고 포트 10011에 연결하려고 하면 LOG iptables 규칙에 의해 생성된 시스템 로그가 표시되지 않으며 openvpn이 중지되면 로그를 볼 수 있으며 모든 것이 잘 작동합니다.
애플리케이션에서 나가는 트래픽의 소스 IP가 tun0 인터페이스 중 하나이므로 라우팅이 어딘가에서 끊어졌을 수 있습니다.