LAN의 특정 IP에 대해 Linux 라우터에서 OpenVPN 우회

LAN의 특정 IP에 대해 Linux 라우터에서 OpenVPN 우회

저는 네트워크로 연결된 컴퓨터에서 Archlinux를 라우터로 사용하여 VPN을 통해 모든 인터넷 트래픽을 암호화합니다. 하지만 LAN에 있는 장치에 대해 Openvpn을 우회해야 합니다. IP 주소는 항상 192.168.0.111입니다.

3가지 주요 인터페이스가 있습니다.

enp4s0 which is my WAN
enp1s0f0 which is my LAN
tun0 which is Openvpn Interface

내 iptables 규칙은 다음과 같습니다.

#!/usr/bin/env bash

# enp1s0f0 is LAN (Distribute Internet Across Local Area Network or Devices on LAN)
# enp4s0 is WAN (Provide internet)
# tun0 is Openvpn Interface

EXT1="tun0"
EXT2="enp4s0"
INT="enp1s0f0"

iptables -t nat -F
iptables -F

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


iptables -t nat -A POSTROUTING -o $EXT1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o $EXT2 -j MASQUERADE


iptables -A FORWARD -i $EXT2 -o $INT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INT -o $EXT2 -j ACCEPT

iptables -A FORWARD -i $EXT1 -o $INT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i $INT -o $EXT1 -j ACCEPT

ovpn 구성에서 주소(대상 주소)를 지정하지 않으면 모든 것이 VPN을 통과하므로 해당 특정 사이트나 도메인에 대해 openvpn을 우회합니다. 하지만 그 외에는 LAN 장치 중 하나(192.168.0.111)가 모든 트래픽을 우회하고 WAN을 직접 통과하기를 원합니다.

ovpn 구성에서 이를 지정하면 장치가 모든 연결을 잃거나 끊기고 전혀 보내고 받지 못합니다. ip Route를 사용할 때도 같은 일이 발생합니다. 나는 이것이 나의 지식 부족이라는 것을 알고 있습니다.

이를 달성하기 위해 openvpn 구성을 사용해 보았지만 소용이 없었습니다.

많이 조사했지만 정보가 너무 복잡했습니다.

ip Route나 iptables를 사용하면 이 작업을 쉽게 수행할 수 있습니다. 누구든지 이 작업을 수행하는 방법을 설명할 수 있나요? 간단해요. 이해할 수 있어요.

답변1

마침내 방법을 찾았습니다.

먼저 rt_tables에 대해 규칙 이름 eman을 정의합니다(eman은 임의의 이름임).

echo 200 eman>> /etc/iproute2/rt_tables

그런 다음 내 컴퓨터의 IP 주소를 새로 생성된 테이블에 추가했습니다(이 IP는 OpenVPN을 우회하고 기본 게이트웨이에 직접 연결하려는 컴퓨터에 속합니다).

ip rule add from 192.168.0.111 table eman

그런 다음 이 테이블은 게이트웨이(192.168.100.1)를 통해 기본(WAN) 인터페이스(enp4s0)를 통해 라우팅됩니다(eman)

ip route add default via 192.168.100.1 dev enp4s0 table eman

그런 다음 캐시를 새로 고칩니다.

ip route flush cache 

다른 장치(예: 192.168.0.113)가 있는 경우 테이블에 쉽게 추가할 수 있습니다.

ip rule add from 192.168.0.113 table eman

관련 정보