openvpn관련 질문이요..


openwrt 기반의 무선 브릿지 2대를 연결했고, 현재 PC2는 Client<->AP 무선링크를 통해서 PC1 또는 외부로 통신가능한 상태입니다.

위 구성에서 AP와 Client 무선구간을 암호화는 용도로 openvpn을 사용하고싶어요.

AP를 openvpn서버, Client를 openvpn클라이언트로 설정했어요.
tun0 가상 인터페이스가 생성 되었구요. AP와 Client 간에 tun0을 통한 암호화 통신이 가능해요. 

그런데 PC2가 traceroute 8.8.8.8 하거나 외부로 통신시 AP와 Client의 기본 eth0 포트 192.168.88.0/24대역을 통해서 통신하는데.. tun0를 거쳐서 통신하고싶어요.

Client 쪽에서 외부와 통신하려면 전부 AP장비를 통해 나가거나 들어오잖아요. 

client의 eth0로 들어온 데이터 중는 전부 tun0로 보내서 openvpn 암호화 처리  전달하고싶어요

그리고 AP에서도 eth0로 들어온것중에 

Client로 가야하는 패킷이면 전부 tun0로 포워딩해서 openvpn에서 암호화  전달해야해요


pc1---AP<->Client---pc2 간의 통신시 무조건 tun0를 통해서 암/복호화 하길 원해요

그럴려면 eth0와 tun0간에 포워딩또는 라우티을 어떻게 설정해줘야 하는것인가요?

방법을 알려주세요.


현재 제 장비의 설정은 다음과 같아요..



my AP settings :


root@ap:~# route 

Kernel IP routing table

Destination Gateway Genmask Flags Metric Ref Use Iface 

default 192.168.88.254 0.0.0.0 UG 0 0 0 br-lan 

10.8.0.2 * 255.255.255.255 UH 0 0 0 tun0 

192.168.88.0 * 255.255.255.0 U 0 0 0 br-lan


root@ap:~# ip route

default via 192.168.88.254 dev br-lan proto static 

10.8.0.2 dev tun0 proto kernel scope link src 10.8.0.1 

192.168.88.0/24 dev br-lan proto kernel scope link src 192.168.88.118


root@ap:~# iptables -L -v 

Chain INPUT (policy ACCEPT 18842 packets, 5316K bytes) 

pkts bytes target prot opt in out source destination


Chain FORWARD (policy ACCEPT 128K packets, 34M bytes) 

pkts bytes target prot opt in out source destination 

534 58181 ACCEPT all -- any any anywhere anywhere ctstate RELATED,ESTABLISHED 

1 84 ACCEPT all -- tun0 br-lan 10.8.0.0/24 192.168.88.0/24 ctstate NEW


Chain OUTPUT (policy ACCEPT 277 packets, 31329 bytes) 

pkts bytes target prot opt in out source destination


root@ap:~# brctl show 

bridge name bridge id STP enabled interfaces 

br-lan 7fff.7c4f7d002788 no ath0 

                                  eth0


my client settings:


root@client:~# route 

Kernel IP routing table 

Destination Gateway Genmask Flags Metric Ref Use Iface 

10.8.0.1 * 255.255.255.255 UH 0 0 0 tun0 

192.168.88.0 * 255.255.255.0 U 0 0 0 br-lan


root@client:~# ip route 

10.8.0.1 dev tun0 proto kernel scope link src 10.8.0.2 

192.168.88.0/24 dev br-lan proto kernel scope link src 192.168.88.119


root@client:~# iptables -L -v 

Chain INPUT (policy ACCEPT 189K packets, 16M bytes) 

pkts bytes target prot opt in out source destination


Chain FORWARD (policy ACCEPT 96205 packets, 27M bytes) 

pkts bytes target prot opt in out source destination


Chain OUTPUT (policy ACCEPT 54605 packets, 3213M bytes) 

pkts bytes target prot opt in out source destination

태그가 없습니다.
서버벨은 거의 모든 브랜드의 서버, 네트워크장비, 파트 및 옵션을 운영하고 있습니다.

Sponsored http://www.serverbells.com

서버벨은 HP, DELLEMC, IBM, LENOVO, CISCO, FUJITSU, ARISTA, ARUBA 등 전반적인 IT브랜드 신품/리퍼 재고를 유지 및 서버/스토리지/네트워크/옵션/파트 등을 전문적으로 운영하는 기업입니다.

자세히 보기

6개의 답변이 있습니다.

0 추천 | 3달 전

암호화를 유지하며서 openVPN 터널 tun0을 통해 PC1과 PC2 사이의 모든 트래픽을 라우팅하려면, 

우선 라우팅 구성 및 규칙을 추가해야 합니다.

openVPN AP 에서,

  • 라우팅 구성 
    - AP에서 IP 전달 활성화 여부 확인 (커널 매개변수 수정 또는  sysctl -w net.ipv4.ip_forware=1 명령어로 활성화)

  • 라우팅 규칙
    - eth0에서 tun0으로 트래픽을 전달하는 라우팅 규칙 추가

    iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

    iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT

    iptables -t nat -A POSTRUTING -o tun0 -j MASQUERADE

    - openVPN AP 구성할 때, VPN을 통해 모든 클라이언트 트래픽을 리디렉션하려면 openVPN AP 구성 파일에 push "redirect-gateway def1" 있는지 확인

openVPN 클라이언트에서,

  • 라우팅 구성
    openVPN 클라이언트에서 eth0과 tun0 사이의 트래픽 흐름을 허용하는지 확인

    iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT

    iptables -A FORWARD -i tun0 -o eth0 -m state --state RELATED, ESTABLISHED -j ACCEPT

    openVPN 클라이언트 구성 파일에 'redirect-gateway' 옵션이 없는지 확인

이렇게 설정한 다음 PC1은 VPN 터널을 통해 PC2와 통신할 수 있는지 테스트 하면 됩니다.

  • PC1에서 기본게이트웨이가 VPN 서버의 IP주소로 설정되어 있는지 확인

  • PC2에서는 기본게이트웨이가 변경되지 않은 상태로 유지되는지 확인

참고할 부분은, openVPN AP와 클라이언트 구성 모두에 적절한 경로가 있는지 push, route  잘 설정되어 있는지 확인해야하고, 특정 네트워크 구성 및 보안 요구 사항에 따라 iptables 규칙을 조정하세요. 마지막으로 openVPN 구성에 라우팅 및 서브넷 구성에 대한 적절한 설정이 있는지도 확인하세요.

VPN 암호화로 인해 약간의 오버헤드가 발생할 수 있으며 이는 전체 네트워크 성능에 영향을 미칠 수도 있습니다. 그러나 모니터링을 하면서 openVPN 구성 파일에서 암호화 설정을 조정하여 보안과 성능 간의 적절한 균형을 찾을 수있습니다. 

참고하세요. you got this

Reply

게시글 작성자 | 3달 전

친절한 답변 감사합니다~


앵그리파파님께서 알려주신 방법으로 장비와 PC를 각각 설정을 했어요


그런데 약간 문제가 있습니다.


AP와 Client 장비 안에서 Server(10.8.0.1) <->Client(10.8.0.2) tun0 아이피로 iperf를 측정했을때 성능이 100mps정도 나옵니다.


그런데  구성의 PC1(10.8.0.100)과 PC2(10.8.0.200)에서 iperf를 돌리면 700mbps가 나와요..


이것은 openvpn연동하지 않은채 PC1(192.168.88.100)<->PC2(192.168.88.200)에서 iperf를 측정한 속도와 같아요.. 


이러면 암호화가 되지 않은 성능인데.. 터널링 네트웍이 아닌 그냥 기본 루트로 트래픽이 흘러가는  같아요


제가 추가로 어떤 설정을 하면 좋을까요..?

Reply

| 3달 전

openVPN 구성이 관련된 특정 IP 주소에 대해 터널을 통해 트래픽을 올바르게 라우팅하지 못하는 것 같은데요, 

  • 1.openVPN AP 구성 파일에 다음 내용이 있는지 확인해보세요.

    server 10.8.0.0 255.255.255.0
    push "route 10.8.0.0 255.255.255.0"

  • 2.PC1 및 PC2의 openVPN 클라이언트 구성에 다음 내용이 있는지 확인해보세요.

    route 10.8.0.0 255.255.255.0

  • 3.서버측과 클라이언트측 모두에서 방화벽 규칙을 확인하세요. 규칙은 openVPN 터널을 통한 트래픽을 허용해야 합니다.

    예를 들어

    iptabels -A FORWARD -i tun0 -o tun0 -j ACCEPT
    iptabels -A FORWARD -i tun0 -o eth0 -j ACCEPT
    iptabels -A FORWARD -i eth0 -o tun0 -j ACCEPT

  • 4.서버와 클라이언트 모두에서 IP 전달이 활성화되어 있는지 확인하세요. 

    /etc/sysctl.conf 에서 net.ipv4.ip_forward = 1 설정(변경 후) 

    sysctl -p 를 실행하여 구성 적용

  • 5.PC1과 PC2 모두에서 라우팅 테이블을 확인하여 openVPN 네트워크(10.8.0.0/24)의 트래픽이 openVPN 터널 인터페이스(tun0)를 통해 라우팅 되는지 확인하세요. 

    route -n

    openVPN AP 및 클라이언트 로그에서 오류나 경고가 있는지 확인하세요. 

    openVPN AP가 NAT 뒤에 있는 경우 openVPN 트래픽을 전달하기 위한 적절한 NAT 규칙이 있는지 확인하세요.

변경 후 openVPN AP 서비스를 다시 시작하고 iperf 성능을 다시 테스트 해보세요.


Reply

댓글 남기기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

1st 5stars

0 추천 | 3달 전

기본적으로...

라우팅이 되려고 한다면, 출발지 컴퓨터와 목적지 컴퓨터가 다른 네트워크에 있어야 합니다.

VPN 또한 서로 다른 네트워크에 있는 LAN을 가상으로 묶어서 동일한 네트워크에 있는 것 처럼 만들어 주는 방식이 되는 것이고요.


말씀한 구간의 모든 IP들이 192.168.88.X로 Class로 본다면 모두 동일 네트워크 내에 있는 IP에 해당하네요.

동일한 네트워크에 있는 IP들은 게이트웨이가 필요하지 않습니다.

게이트웨이가 필요하지 않는다는 것은 라우팅이 필요하지 않는다는 의미가 되겠고요.

라우팅이 되게 만들려면 네트워크를 달리 구성해서 게이트웨이를 통해서 통신하도록 구성해야만 가능합니다.

Reply

게시글 작성자 | 3달 전

답변감사합니다!!

VPN 또한 서로 다른 네트워크에 있는 LAN을 가상으로 묶어서 동일한 네트워크에 있는 것 처럼 만들어 주는 방식이 되는 것이고요.  <= 구글링을 해도 이렇게만 나와서 여기에 질문드립니다..


제가 원하는 것은.

동일 서브넷에 있는 2개의 wifi공유기를 

하나는 AP모드로 다른 하나는 Client모드로 설정 후 무선으로 링크시키고, 

 무선구간의 패킷을 암호화하는 용도로 openVPN을 사용하려고합니다.


client의 물리적인 NIC로 들어온 데이터를 터널링 인터페이스를 통해 AP로 전달할 수는 없나요?


저는 AP<->Client  장비 안에서 iperf로 tun0 IP 속도 측정시 터널링 암호화되어 속도가 저하된 것을 확인했어요.


그러나 PC2<-> PC1 간에는 tun0 (10.8.0.X) 대역의 IP로 통신할 수가 없어서..


192.168.88.X 대역의 IP를 가지고 PC2<->PC1 속도 측정을 했더니, 암호화가 되지 않은 기본성능 그대로 나와요ㅠㅠ 제가 원하는 결과가 아닙니다.. 


혹시 제가 어떻게 시험을 해볼수있을지.. 방안을 알고 계실까요?

Reply

| 3달 전

VPN을 사용하려면 출발점 네트워크와 도착점 네트워크가 다른 네트워크에 있어야 합니다.

동일한 네트워크내에서는 VPN을 적용할 수 있는것이 아니며, 의미 있는 기술도 아닙니다.

해당 구간에 굳이 VPN으로 연결하려고 한다면 네트워크를 다르게 만들어 줘야 합니다.

출발지와 목적지가 다른 네트워크로 만들어 줘야만 목적지를 찾아가기 위해 게이트웨이의 도움을 받으려고 시도하게 할 수 있으며, VPN 통신을 하는 게이트웨이가 패킷을 받아서 상대편 라우터로 패킷을 전송해 주게 할 수 있는 것입니다.


그리고, 첨부한 이미지에서...

오타인지는 모르겠지만... PC 1과 PC2 모두가 192.168.88.100으로 동일한데...

통신하려는 네트워크내에 동일한 IP가 있다면 IP 충돌로 IP 통신 자체가 안되게 되겠고...

VPN 통신을 하고 싶은 양쪽 네트워크를 192.168.88.X/24, 192.168.99.X/24 와 같이 서로 다르게 C Class IP를 부여해서 VPN 설정을 해 주거나...

192.168.88.X의 IP를 사용하고 싶다면, 서브넷 마스크를 192.168.88.100/25  ( 192.168.88.1~126 ) 와 192.168.88.200/25  ( 192.168.88.129~254 ) 와 같이 해서, 출발지 네트워크와 목적지 네트워크를 서로 다르게 구성해 주어야만 VPN 구간을 활용할 수 있게 됩니다.

같은 LAN 내에서 암호화 구성을 하려 할 경우라면...  L2 기반의 암호화 방식이나 아니면... L7 기반의 암호화를 적용해서 통신하려는 단말마다 암호화 솔루션을 설치해서 암호화 기능을 구현해야 하지 않을까 싶어 보이네요.

Reply

댓글 남기기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

답변 달기

답변을 작성 하시려면 로그인이 필요합니다.

로그인 회원가입

IT 솔루션 또는 하드웨어 도입을 검토 중 이신가요?

쉐어드IT 솔루션 상담실에서 믿을 수 있는 제품과 업체를 추천 받으실 수 있습니다.

솔루션 상담실 IT 컨시어지 서비스

네트워크 카테고리의 다른 질문들...

  • 4일 전
  • 댓글 : 3일 전
  • 4일 전
  • 댓글 : 2일 전
  • 5일 전
  • 댓글 : 하루 전
  • 11일 전
  • 댓글 : 10일 전
  • 12일 전
  • 댓글 : 8일 전
  • 16일 전
  • 댓글 : 8일 전