![로컬 클라이언트/서버 통신을 위해 TUN 인터페이스 사용](https://linux55.com/image/38015/%EB%A1%9C%EC%BB%AC%20%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8%2F%EC%84%9C%EB%B2%84%20%ED%86%B5%EC%8B%A0%EC%9D%84%20%EC%9C%84%ED%95%B4%20TUN%20%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4%20%EC%82%AC%EC%9A%A9.png)
TUN 인터페이스를 사용하여 클라이언트와 서버 간의 로컬 통신을 설정하고 싶습니다.
클라이언트 프로그램은 IP 주소 @IP1을 가지고 있다고 가정하는 인터페이스 TUN1에 연결됩니다.
서버 프로그램은 IP 주소 @IP2를 가지고 있다고 가정하는 인터페이스 TUN2에 연결됩니다.
대상 주소가 IP2(서버의 IP)인 패킷은 TUN2를 통과하고 대상 주소가 IP1(클라이언트의 IP)인 패킷은 TUN1 인터페이스를 통과하도록 라우팅 규칙을 정의해야 합니다.
규칙 예:
route add -net 10.2.0.0/24 dev tun2 #we suppose that the server's IP is in the subnet 10.2.0.0/24
route add -net 10.1.0.0/24 dev tun1 #the client's IP is in the subnet 10.1.0.0/24
클라이언트에서 서버로 전송된 패킷이 통과하는 iptables 체인을 알아야 합니다.
제가 이해한 바에 따르면 다음과 같아야 한다고 생각합니다.
Client==TUN1--->(PREROUTING)--->Routing--->(FORWARD)--->Routing--->(POSTROUTING)--->TUN2==Server