응용 프로그램에서 특정 네트워크 인터페이스를 사용하도록 설정


2

openvpn 연결이 있고 하나의 응용 프로그램에서만 작동하려면이 응용 프로그램이 특정 로컬 포트를 사용합니다. openvpn 구성 파일에서 route-nopull 을 사용한 다음 :

ip route add default via {P-t-P-IP} dev tun0 table 10;
ip rule add from {tun0-inet addres} table 10;

curl을 사용하여 테스트했습니다.

curl http://icanhazip.com;
curl --interface tun0 http://icanhazip.com;

첫 번째는 내 일반 ip를 제공하고 두 번째는 openvpn 연결 ip를 제공하므로 제대로 작동하는 것 같습니다.

이제 특정 앱에서 tun0 인터페이스를 사용하는 데 문제가 있습니다. 앱은 로컬 포트 ​​1033을 사용하여 일부 웹 요청을합니다. 나는이 iptables 규칙 (한 번에 하나씩)을 시도하여 인터넷 검색을 찾았습니다.

iptables -A OUTPUT -o eth0 -p tcp -m tcp --sport 1033 -j DROP
iptables -A OUTPUT -o tun0 -p tcp -m tcp --sport 1033 -j ACCEPT

iptables -A PREROUTING -p tcp --sport 1033 -i tun0

iptables -A PREROUTING -i tun0 -p tcp -m tcp --sport 1033

iptables -A PREROUTING -i tun0 -t mangle -p tcp --sport 1033 -j MARK --set-mark 1

그런 다음이 테스트를 실행했습니다.

curl --local-port 1033 http://icanhazip.com

그러나 openvpn 연결 ip가 아닌 정상적인 eth0 ip를 얻습니다.

이 규칙을 시도하면 (ipv4_forward도 1로 설정) :

iptables -t nat -A POSTROUTING -p tcp --sport 1033 -j SNAT --to-source 10.10.10.2;
iptables -t nat -A POSTROUTING -p udp --sport 1033 -j SNAT --to-source 10.10.10.2;

10.10.10.2는 내 tun0 인터페이스 ip (openvpn이 사용하는 인터페이스)이며 curl 명령이 시간 초과됩니다.

로컬 포트 ​​1033의 모든 트래픽이 tun0 인터페이스를 통과하도록하려면 어떻게해야합니까?


어플리케이션이 무엇인지, 그리고 포트 1033을 사용하여 무엇을하고 있는지 명확히 할 수 있습니까? 서버에서 수신 대기 중이거나 원격 위치 (클라이언트로서)의 해당 포트에 연결되어 있습니까?
André Fernandes

답변:


1

리눅스 네트워크 네임 스페이스를 사용할 수 있습니다. 다른 네임 스페이스에 tun 인터페이스를 추가하고 해당 네임 스페이스에서 앱을 실행할 수 있다고 생각합니다. 다음은 이것을 사용하는 방법에 대한 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.