반응형

* 우분투 18.04 버전 기반(Ubuntu 18.04)

1. vpnclient 프로그램 설치
sudo apt install vpnc network-manager-vpnc-gnome



2. 설정
root@VL-harbor:~# cat  /etc/vpnc/default.conf
#IPSec gateway <gateway>
#IPSec ID <group-id>
#IPSec secret <group-psk>
#IKE Authmode hybrid
#Xauth username <username>
#Xauth password <password>
※ sudo vpnc /etc/vpnc/default.conf 혹은 sudo vpnc \default.conf 


3. VPN 연결
# sudo vpnc-connect (끊을때는 sudo vpnc-disconnect)
예시)
root@VL-harbor:~# cat /etc/vpnc/default.conf
IPSec gateway [VPN Public IP]
IPSec ID [VPNGroupID]
IPSec secret [VPNGroup-password]
#IKE Authmode hybrid  ---> 주석 처리해도 무방함
Xauth username [VPN Client ID]
Xauth password [VPN Client password]
root@VL-harbor:~#


4. VPN 연결 확인:  sudo vpnc-connect 이후  ip addr 에서 tun0 로 client IP 할당 된것 확인가능
root@VL-harbor:~# ip addr

  : tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1412 qdisc fq_codel state UNKNOWN group default qlen 500    link/none
    inet 172.20.38.153/32 scope global tun0  //# Assigned
       valid_lft forever preferred_lft forever
    inet6 fe80::59bf:bd0d:ee37:3533/64 scope link stable-privacy
       valid_lft forever preferred_lft forever

 * 혹은 아래처럼 default route가 tun0 로 잡힌것도 확인 가능함
:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 tun0  //# set
121.137.98.146  150.100.200.1   255.255.255.255 UGH   0      0        0 ens3
150.100.200.0   0.0.0.0         255.255.255.0   U     0      0        0 ens3
172.20.38.152   0.0.0.0         255.255.255.248 U     0      0        0 tun0


* VPN 서버에서 split vpn 설정해두었다면, 외부망 ping도 가능
:~# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=3.87 ms\


위는 CLI 로 하는 방법이며, 리눅스에 GUI 가 있다면 아래 링크를 통해 GUI base 로도 설정 가능함.
https://johnpili.com/how-to-connect-to-a-cisco-vpn-in-ubuntu-18-04-lts/


출처: 부서의 VPN 전문가 선배님

반응형
반응형

양단의 IPSec이 Phase-2까지 Completed 되었으나 실제 local IP간 icmp가 실패하는 문제가 발생하였다.

이유를 확인하기 위해 Cisco ASDM의 Monitoring에서 해당ip로 Logging을 잡아보면, 아래와 같은 NAT 이슈가 발생하고 있다.

현상

5 Apr 28 2020 11:04:18 305013 10.10.0.214 20.20.20.50

Asymmetric NAT rules matched for forward and reverse flows; Connection for icmp src outside:10.10.0.214 dst AWS:20.20.20.50 (type 8, code 0) denied due to NAT reverse path failure

설명 및 해결방법

10.10.0.214 -> 20.20.20.50 connection에 대해 잘못된 NAT rule이 적용되어(동일하게 사용하는 existing pool이 또 있다는 것임), NAT reverse path failure로 인해 connection이 deny 되고있었다.

이는 해당 VPN Group의 NAT Exempt 설정을 dst쪽 network로 설정해주면 된다.

설정

Configuration > Site-to-Site VPN > Connection Profiles > 해당 Connection profile name 클릭 > Basic > NAT exempt > Exempt ASA side host/network from address translation 에서 dst쪽 inteface 선택.

이후 해당 vpn profile은 NAT Exemption이 되므로 connection은 정상연결 완료된다.

* NAT Exempt: This allows you to exempt the local network addresses from network translation.

반응형
반응형

 

문제가 발생했을 때 분석을 위해 알아본 Cisco ASA VPN의 packet 캡처 방법.

ASDM의 Monitoring에서 실시간 logging을 제공하나, ACL/NAT단에서 걸릴 경우 아무런 패킷도 Trace 창에 보이지 않게되는데, 이럴 때 유용한 패킷 캡처 방법이다.

 

1. packet capture 방법(설명)

- 출처: Cisco사 CLI 설명서 1: Cisco ASA Series 일반 운영 CLI 구성 가이드, 9.10 : 1223 page ~ 1228 page

옵션 값이 매우 많아서 자료를 그대로 들고왔다.

 

 

 

이렇게 패킷캡처를 설정한 후에는 아래와 같이 패킷 캡처를 보는 명령어가 별도로 존재한다.

패킷 캡처 설정 후, 아래 명령어를 실행해야 실제 캡처되는 패킷을 확인할 수 있다.

 

 

2. 설정 및 실습 - CLI

그렇게 직접 실습해 본 packet capture.

현재 20.20.20.50 - 20.20.20.246은 NAT 설정 오류로 인해 20.20.20.246 -> 20.20.20.50으로 Ping을 실행할 경우 packet이 drop되는 상태이다. 그래서 20.20.20.50 -> 20.20.20.246 방향과 20.20.20.246 -> 20.20.20.50 패킷 캡처를 진행해보았다.

 

1) packet capture

ciscoasa# capture CAP_TEMP_AWS buffer 2048 interface AWS match icmp host 20.20.20.246 any
ciscoasa# capture LOG_DROP type asp-drop all match ip host 20.20.20.50 host 20.20.20.246
ciscoasa# capture LOG_DROP type asp-drop all match ip host 20.20.20.246 host 20.20.20.50

 

2) show capture

packet 캡처를 설정 후, show capture를 통해 패킷 캡처를 확인한다.

#show capture    // 전체 capture되고 있는 packet capture 확인

Result of the command: "show capture"
capture CAP_TEMP_AWS type raw-data buffer 2048 interface AWS [Capturing - 456 bytes] 
  match ip host 20.20.20.246 any 
  match ip host 20.20.20.248 any 
capture LOG_DROP type asp-drop all [Buffer Full - 524284 bytes] 
  match ip host 20.20.20.50 host 20.20.20.248 

 

2-1) 전체 packet capture 확인

#show capture // 전체 capture되고 있는 packet capture 확인 Result of the command: "show capture" capture

 

CAP_TEMP_AWS type raw-data buffer 2048 interface AWS [Capturing - 456 bytes] match ip host 20.20.20.246 any match ip host 20.20.20.248 any capture LOG_DROP type asp-drop all [Buffer Full - 524284 bytes] match ip host 20.20.20.50 host 20.20.20.248

 

2-2) 특정 packet capture 확인

Remove the captures when done.

ciscoasa# no capture CAP_TEMP_AWS
ciscoasa# no capture LOG_DROP


그리고 원인 파악을 위해 show nat로 NAT를 확인한다.

설정된 NAT에는 패킷이 걸렸으나, 다른 이슈로 인해 untranslate가 되었다.

현재 왜 untranslate가 되었는지 파악하는 중이다.

 

2-2. 설정 및 실습 - ASDM

패킷캡처는 ASDM에서도 아래 방법을 통해 진행할 수 있다.

1) Configuration > Firewall > NAT Rules > Packet Trace

 

 

 

Packet Trace를 클릭 후 interface와 packet Type을 설정 후 설정값들을 입력하면 애니메이션과 함께 어떤 부분에서 어떤 rule이 적용됐는지 + 버튼을 통해 확인할 수 있다.

 

어떤 단계들을 거쳐왔는지 + 버튼을 통해 확인해본다.

 

 

 

반응형
반응형

1. 문제현상

Cisco Remote Access VPN으로 연동되는 remote client - remote server간 ping은 성공되지만 ssh 접속 불가

2. 문제 로그

Dec 06 2017 12:57:16: %ASA-6-305011: Built dynamic TCP translation from inside:10.71.123.151/57475 to outside:192.40.147.229/24073

Dec 06 2017 12:57:16: %ASA-6-106015: Deny TCP (no connection) from 10.71.123.151/57475 to 23.74.76.94/443 flags ACK on interface inside

Dec 06 2017 12:57:28: %ASA-6-106100: access-list inside_acl permitted tcp inside/10.71.123.151(57517) -> outside/23.49.100.174(80) hit-cnt 1 first hit [0x3cf7b301, 0x0]

Dec 06 2017 12:57:28: %ASA-6-305011: Built dynamic TCP translation from inside:10.71.123.151/57517 to outside:192.41.148.241/63165

Dec 06 2017 12:57:28: %ASA-6-106015: Deny TCP (no connection) from 10.71.123.151/57517 to 23.49.100.174/80 flags ACK on interface inside

3. 문제 원인 및 해결

"Deny TCP (no connection) from" is a expected behavior when packet faces asymmetric routing or different firewall context.

Cisco community의 위 답변에 따르면 해당 로그는 라우팅 또는 firewall 문제이지만, 본인의 경우 ping은 되었으므로 라우팅은 문제 없음. NAT/Firewall 확인 필요.

해당 client - server의 specific대역에 대한 Static NAT 설정 후 ssh 접속 가능함을 확인.

+ 그래도 안 될 경우에는 vpn 내부 문제일 수도 있다. 그럴 땐 CLI에서 'clear conn'를 해주면 된다.

반응형
반응형

python에서 textmining등 한글text 분석을 위해서는 konlpy 설치가 필요하다.

konlpy는 단순히 pip install로 끝나는 것이 아니라 java설치 등 선행되는 작업이 많으므로 아래 절차를 차근차근 진행해야한다.

아래절차를 선행하지 않는다면 본인처럼 엄청난 에러메세지를 마주하게 될 것이다...

차근차근 설치방법을 포스팅.

 

0. KoNLPy 제공자의 가이드 확인

https://konlpy-ko.readthedocs.io/ko/v0.4.3/install/

 

설치하기 — KoNLPy 0.4.3 documentation

주석 설치 및 사용 도중 문제가 발생하는 경우 다음 페이지들을 참고해주세요: 리눅스. 맥 OS. 윈도우. 발생한 문제가 어디에도 없는 경우 “New Issue” 버튼을 눌러 새로운 이슈를 생성해주시기

konlpy-ko.readthedocs.io

 

0-1) 윈도우의 경우 아래와 같음

1. Java 1.7+ 설치

* konlpy를 pip install로 설치하기 전 아래 절차를 먼저 수행한다.

안그러면 설치 후 다 꼬여버려서 에러나고 난리난다! (본인)

1) 본인 OS 정보 확인

2) Java 다운로드 사이트 접속 및 본인 OS에 맞는 버전 설치

https://www.oracle.com/technetwork/java/javase/downloads/jdk13-downloads-5672538.html

윈도우 64bit일 경우, Accept License Agreement 클릭 후 가장 하단 windows-x64_bin.zip 다운로드

이후 압축풀고 실행

2. JAVA_HOME 설정

1) jvm.dll 경로 확인

jvm.dll 파일이 있는 경로를 환경변수에 입력해줘야한다.

설치된 파일이 어디에 있는지 경로 확인 후(나는 Everything 프로그램으로 확인했다.)

* 나는 여러 목적들로 다운받은 적이 많아서 여러 개가 뜨는데, 초기 설정했을 경우 1-2개만 뜰 것이다.

 

2) 시스템 > 고급시스템설정 > 고급 > 환경변수

3) 사용자변수 새로만들기

4) JAVA_HOME 등록 후 저장

3. jPype1 (>=0.5.7) 다운로드

1) pip 최신버전 업데이트 및 python 버전 확인

# pip install --upgrade pip

# python

Python 3.6.7 on win32

2) jPype1 다운로드

https://www.lfd.uci.edu/~gohlke/pythonlibs/#jpype

 

Python Extension Packages for Windows - Christoph Gohlke

Many binaries depend on numpy-1.16+mkl and the current Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 for Python 3, or the Microsoft Visual C++ 2008 Redistributable Package x64 , x86 , and SP1 for Python 2.7. Install numpy+mkl before other packages that depend on it. The ...

www.lfd.uci.edu

3) 본인 python 버전에 맞는 JPype 다운로드

나는 python 3.6.7 이며 32bit으로 다운받았기 때문에 cp36-win32.whl를 다운받아야한다.

* 본인 피씨 OS버전이 아니라 Python의 버전에 따라야한다. (내 pc는 64bit이지만 python은 32bit)

4. konlpy 설치

 

끝!

반응형
반응형

텍스트마이닝을 업로드하던 중 사전 진행필요한 절차가 많아 크롬드라이버 설치 및 konlpy등을 먼저 포스팅.

크롬드라이버는 crawling을 위해 필요한 프로그램으로 크롤링 시 추가적인 창을 띄워 정보들을 가져올 수 있음.

1. 크롬드라이버 다운로드 사이트 접속

https://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

2. 본인 크롬 버전에 맞는 드라이버를 선택

* 본인 크롬 버전 보는법

크롬 접속 > 더보기 > 도움말 > Chrome 정보(G)

버전 확인 (79.0~)

3. 이후 본인 OS에 따라 zip 다운로드

4. 다운 후, 해당 파일(exe)을 python을 돌릴 directory 안에 업로드

5. 테스트 해보기

패키지 import시 selenium을 import한 후 아래 코드를 통해 새로운 창이 open 되는 것을 확인

# 패키지 import

import datetime as dt

import pandas as pd

import requests

import time

import urllib.request #

import re

import konlpy

from bs4 import BeautifulSoup

from pandas import DataFrame

from selenium.webdriver import Chrome

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.keys import Keys

#크롬드라이버 연결

delay=0.1

browser = Chrome()

browser.implicitly_wait(delay)

start_url = 'https://www.youtube.com/channel/UCtckgmUcpzqGnzcs7xEqMzQ/videos'

browser.get(start_url)

browser.maximize_window()

body = browser.find_element_by_tag_name('body')#스크롤하기 위해 소스 추출

num_of_pagedowns = 30

#스크롤다운

while num_of_pagedowns:

body.send_keys(Keys.PAGE_DOWN)

time.sleep(0.1)

num_of_pagedowns -= 1

 

*** jupyter notebook사용 시 powershell에서 사전에 pip을 통해 selenium을 다운해야함

끝~!!

반응형
반응형

[텍스트마이닝] 유튜브 크리에이터 비교 및 분석 with python

이것은 3학년 텍스트마이닝 수업 과제로 진행했던 유튜버 크리에이터 분석이다. 오늘부터 차근차근 정리해보려고 한다. : )

1. 분석할 데이터 및 목표

- 유튜브 인기채널인 '펭수'와 '워크맨'을 전반적으로 크롤링.

- 어떤영상이 인기가 가장 많은지, 인기가 많은 요인은 무엇인지 게시글 및 댓글 분석

* 기존에 네이버부동산을 크롤링하여 원하는 조건(평수, 지역, 지하철역 등)에 따라 집을 추천해주는 추천서비스를 만들어보려 하였으나, 태그를 크롤링해오지 못하는 문제가 있어 주제를 변경함ㅜㅜ

 

1-2. DataSet 소개

1) 최종적으로는 2개의 Dataset

: 펭수 및 워크맨 영상(paw), 각 동영상별 댓글(paw_reply)

* 펭수 및 워크맨은 각각 1개의 dataset이나 결국 2개를 1개로 합침(paw)

2) 코드 파일은 총 4개

- 1, 2: 는 각 영상(Pengsu, workman)의 dataset 분석 코드

- 3: 1,2를 합친 코드 + 머신러닝

- 4: 3을 통해 NMF(Non-negative matrix factorization, NMF)를 진행한 것

2. 코드 설명

2-1. Pengsu, Workman Dataset 코드: 펭수 및 워크맨 코드 개별 구현 후 전처리에서 병합.

1) 패키지 import: 두 파일 모두 동일

* Konlpy: 한국어 분석을 위한 패키지. 형태소 분석, 명사 분석 등 한국어에 특화된 분석 가능

- Konlpy를 사용하기 위해서는 부가적으로 java설치 및 환경변수 설정 등 먼 여행을 떠나야한다.

이건 추후 포스팅

* selenium: 웹 브라우저를 제어하는 패키지. 유투브 화면 클릭, 스크롤 제어 등에 사용

# 패키지 import

import datetime as dt

import pandas as pd

import requests

import time

import urllib.request #

import re

import konlpy

from bs4 import BeautifulSoup

from pandas import DataFrame

from selenium.webdriver import Chrome

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.keys import Keys

2) Data 입력: Chrome Driver, Crawling

Chrome Driver를 통해 별도 창을 Open 후, 해당 창에서 data를 crawling함

스크롤 다운이 필요한 페이지이므로 스크롤제어를 사용.

* num_of_pagedowns를 조정하여 스크롤 횟수를 지정

#크롬드라이버 연결

delay=0.1

browser = Chrome()

browser.implicitly_wait(delay)

start_url = 'https://www.youtube.com/channel/UCtckgmUcpzqGnzcs7xEqMzQ/videos'

browser.get(start_url)

browser.maximize_window()

body = browser.find_element_by_tag_name('body')#스크롤하기 위해 소스 추출

num_of_pagedowns = 30

#스크롤 다운

while num_of_pagedowns:

body.send_keys(Keys.PAGE_DOWN)

time.sleep(0.1)

num_of_pagedowns -= 1

이를 실행하면 아래와 같이 추가적인 창이 실행된다. (미리 크롬드라이버 설치필요. 설치 링크는 아래!)

https://countrymouse.tistory.com/entry/ChromeDriver

 

크롬드라이버(Chrome Driver) 설치, 다운로드

텍스트마이닝을 업로드하던 중 사전 진행필요한 절차가 많아 크롬드라이버 설치 및 konlpy등을 먼저 포스팅. 크롬드라이버는 crawling을 위해 필요한 프로그램으로 크롤링 시 추가적인 창을 띄워

countrymouse.tistory.com

 

# 페이지 소스 받아오기

html0 = browser.page_source

html = BeautifulSoup(html0,'html.parser')

# 리스트 선언

title_list = [] #제목 리스트 생성

href_list = [] #주소 리스트 생성

viewcountmake_list = [] #조회수 크롤링 위한 리스트 생성

viewcount_list = [] #조회수 리스트 생성

# 구독자 수 저장

subsc = html.find(id="subscriber-count").text

subsc = subsc[4:]

# title 저장

for tr in html.find_all(id="video-title"):

title = tr.get('title')

title_list.append(title)

#href 태그 내용 저장

for tr in html.find_all(id="video-title"):

href = tr.get('href')

href_list.append(href)

# 조회수 저장

for tr in html.find_all('span', class_="style-scope ytd-grid-video-renderer"):

viewcount = tr.get_text('span')

viewcountmake_list.append(viewcount)

contents_count = len(title_list)

#구독자수, 동영상 수

print("구독자 수:",subsc, ",영상 개수:", contents_count)

간단하게 썸네일에 있는 정보로 dataframe을 만들어서 값을 잘 받아왔는지 확인해본다.

intro_df = pd.DataFrame({'구분': "펭수", '구독자':subsc, '영상수':contents_count}, index = [1])

intro_df.head()

#전처리 전 title, 주소, 좋아요수 데이터프레임 생성

print(len(title_list), len(href_list), len(viewcountmake_list))

# viewcountmake_list의 경우 조회수와 등록일이 각각 생성되어 list크기가 다름 -> 데이터프레임 생성 불가

# 데이터 클리닝 작업(조회수와 등록일에서 등록일 제거)

for tr in range(0,len(viewcountmake_list),2):

a = viewcountmake_list[tr]

viewcount_list.append(a)

# 조회수 데이터 전처리

clean_viewcount = []

for i in viewcount_list:

a = i[4:-2]

amul = float(a)*10000

clean_viewcount.append(int(amul))

print(clean_viewcount)

#title, 주소, 좋아요수 데이터프레임 생성

peng_list = pd.DataFrame({'title':title_list, 'href':href_list, 'viewcount':clean_viewcount})

peng_list.head()

#viewcount순으로 정렬

peng_list.sort_values(by=['viewcount'], axis=0, ascending=False)

여기까지 영상에 대한 기본적인 dataframe이 저장되었다.

글이 많이 길어지는 관계로 다음 화에서는 각 영상별 제목 / 본문내용 / 조회수 / 좋아요 / 싫어요 / 작성일 / 주소 dataframe을 생성,

그 후에는 시각화 및 머신러닝을 진행할 예정이다!

 

반응형
반응형

1. NAT(Network Address Translation, NAT)

: 내부 네트웍 IP를 외부 IP대역으로 변환(translation)해주는 것.

변환해주는 이유는 내부 네트워크 보호 또는 Public IP 부족 등을 해결하기 위해.

여러 개의 내부 네트웍 대역이 1개의 Public IP를 port별로 나누어서 사용할 수 있다. (= PAT)

Static NAT는 하나의 내부 IP을 하나의 외부 IP와 1:1 매핑, Dynamic NAT는 N:N, PAT는 1:N이 가능하다.

- Static NAT

. 동작 방식

1) 내부 IP 주소에 따른 외부 IP주소를 미리 1:1 설정

2) 외부 주소에서 내부로 들어온 패킷을 NAT에서 내부 주소로 변환 후 전달

외부 -----------(NAT)-------------> 내부

- Dynamic NAT

. 내부 IP대역, 외부 IP대역을 N:N 설정 후, 실제로 패킷이 인입될 때 설정한 IP POOL에 있는 IP가 할당된다.

2. PAT(Port Address Translation)

: 일반적인 NAT는 내부 네트워크 주소와 외부로 변환되는 주소가 1:1로 매치되는 경우를 말한다.

만약, 다수의 내부 네트워크 주소가 하나의 주소로 변환되어 외부로 나갈 경우에는 오버로딩(Overloading) 또는 PAT (Port Address Translation) 기능이 필요하다.

PAT는 전송 계층 식별자인 TCP와 UDP의 포트 번호, ICMP 쿼리 식별자까지 변환함으로써 주소 변환의 개념을 한층 발전시켰다.

하나의 공인 IP 주소만 있어도 내부 네트워크 전체 주소를 변환할 수 있는 오버로딩 기능덕분에 IP 주소 고갈을 해결할 수 있다.

3. Cisco VPN에서 NAT 설정

Configuration 탭 > Firewall > NAT Rules 에서 인터페이스별 NAT 설정

any, any 설정은 대역마다 다른 IP를 할당할 수 없으므로, 처음부터 명확한 IP 대역을 설정하는 것이 좋음.

Source Intf는 내부 대역으로 설정하고 Dest Intf는 외부 대역으로 설정 및 Dynamic PAT로 설정을 해야 ip 고갈을 해결할 수 있다.

+ Description은 미래에 이걸 왜 설정했는지 까먹는 경우가 생기므로.. 미리미리 작성해두는 것이 좋다.

4. Cisco VPN에서 NAT된 내역 조회

Monitoring 탭 > VPN > VPN Statistics > Sessions에서 VPN 접속 방식(Site-to-Site, Remote Access 등)에 따라 조회 가능하다.

각 접속된 방식 및 User에 따라 Assigned IP Address, Public(Peer) IP Address를 함께 확인할 수 있다.

5. NAT Policy 및 실제 사용되는 packet량 조회

Tolls > Command Line Interface 에서 "show nat"

Result of the command: "show nat"

Manual NAT Policies (Section 1)

1 (trial) to (outside) source dynamic DM_INLINE_NETWORK_20 interface

translate_hits = 8996, untranslate_hits = 3

2 (AT_S) to (outside) source dynamic DM_INLINE_NETWORK_3 interface destination static 8.8.0.0 8.8.0.0 description Ms.YR for_DNS__by Jane_200518

translate_hits = 124663, untranslate_hits = 124664

3 (AT_S) to (outside) source dynamic any interface inactive

translate_hits = 0, untranslate_hits = 0

4 (AT_S) to (any) source static 172.20.20.0 172.20.20.0 destination static NETWORK_OBJ_172.20.62.232_29 NETWORK_OBJ_172.20.62.232_29 unidirectional description Mr.Choi_Jongtak__by_Jane_200513

translate_hits = 0, untranslate_hits = 161

5 (AT_S) to (outside) source static any any destination static NETWORK_OBJ_172.20.38.128_29 NETWORK_OBJ_172.20.38.128_29 no-proxy-arp route-lookup

translate_hits = 0, untranslate_hits = 0

6 (AWS) to (outside) source static NETWORK_OBJ_20.20.20.50 NETWORK_OBJ_20.20.20.50 no-proxy-arp route-lookup description For_mobile__by_S

translate_hits = 3554, untranslate_hits = 9901

7 (AT_S) to (outside) source static any any destination static NETWORK_OBJ_172.20.38.80_28 NETWORK_OBJ_172.20.38.80_28 unidirectional description Mr.Jung__by_Jane_200515

translate_hits = 0, untranslate_hits = 18

8 (DEMO) to (outside) source dynamic 50.50.50.0 interface description Mr.cho__by_Jane_200519

translate_hits = 0, untranslate_hits = 0

* 참고

• translate_hits: counter for real to mapped IP addresses       // 내부 --> 외부

• untranslate_hits: counter for mapped to real IP addresses  // 내부 <-- 외부

즉, 외부에서 내부로 서비스 접속을 시도하게 되면 untranslate_hits count가 발생된다.

예를 들어 아래의 IP에 대해서 Inside to Outside NAT 설정돼 있다면, hits가 되는 방향은 아래와 같다.

Inside Real IP = 172.20.43.10

Outside Mapping IP = 1.1.1.1

=

Translate_hits = 172.20.43.10 to 1.1.1.1

Untranslate_hits = 1.1.1.1 to 172.20.43.10

반응형
반응형

Cisco사의 split tunneling(split vpn)의 개념과 설정방법에 대해 알아본다.

설정방법은 Cisco VPN 프로그램인 ASDM을 사용하였다.

1. Split tunneling이란?

특정 트래픽에 대해서만 VPN을 거치게하고 다른 트래픽은 인터넷으로 보낼 수 있는 방법.

일반적으로 VPN을 사용하는 이유는 외부에서 내부 네트워크에 접속하기 위함인데, 이와 동시에 외부 망(구글 등 인터넷)도 해당 vpn으로 함께 사용할 수 있다.

보안에 취약하지만 작은 네트워크라면(100~200명) 부담없이 사용할 수 있다.

(네트워크가 광범위하다면 과한 트래픽 발생으로 사용에 조심할 필요가 있다.)

2. 설정방법 (Cisco ASDM)

1) 메뉴 접속

Configuration > Remote Access VPN > Network(Client) Access > Group Policies > Split할 VPN 계정 클릭 후 Edit 선택

2) Policy 및 Network list 설정

Edit Internal Group Policy창이 팝업되면, 왼쪽 메뉴에서 Advanced > Split Tunneling

- Policy: Inherit 체크 해지 후 'Tunnel Network List Below' 선택.

- Network List: Manage button을 눌러, 해당 계정에서 사용할 vpn network range 등록 후 해당 network name 선택

* Network는 본인이 VPN대역으로 사용할 Internal 대역을 ACL/ACE로 별도 추가해야한다.

이렇게 저장하고 나면,

해당 계정에서 사용할 network는 vpn 터널을 통해 트래픽이 전달되고, 이 외 outside 트래픽(ex. Google 등 웹사이트)은 별도의 터널을 통해 outside로(ex. google) 트래픽을 내보낼 수 있다.

따라서, vpn에 접속하면 기존엔 vpn접속한 대역 외엔 outside 네트워크로 접속이 불가했지만 split tunneling 수행으로, 하나의 vpn 계정을 통해 2개의 네트워크 대역을 사용할 수 있다!

 

반응형
반응형

Access-List

목적

VPN에서 새로운 Interface를 설정할 때 ACL을 설정해서

각 Remote-access로 접속하는 vpn client들에게 routing table을 내려주기 위함.

 

개념

Standard ACL: 발신지의 IP Adress만으로 Access를 제한. 번호는 1-99사용

Extended ACL: 발신의 IP/Port, 수신의 IP/Port를 사용하여 Access를 제한. 번호는 100-199 사용

 (더 자세한 설명은 아래 출처 링크 참고)

 

명령어

access-list [ACL NAME] standard permit 21.21.21.0 255.255.255.0    // ipsec 통신할 내부대역 지정

group-policy [Interface] attributes   // 설정한 Interface에 ACL 적용

split-tunnel-policy tunnelspecified   // split-tunnel 활성화 (Internet Traffic은 ASA로 오지 않고 client에서 바로 인터넷 사용)

split-tunnel-network-list value [ACL Name]   // 해당 ACL Traffic만 ipsec 통신 사용

ASDM

* ACL

Firewall > Advanced > ACL Manager or Standard ACL

- Standard ACL: Standard ACL에서 확인

- Extended ACL: ACL Manager에서 확인

* Client 라우팅 / Split-tunneling 설정

Remote Access VPN > Network Access > Group Policy > Group Policy 선택 > Edit > Advanced > Split Tunneling > Policy & NetworkList 선택

 

* Policy:Tunnel Network List Below를 설정해야 해당 Network List만 IPSEC 통신을 함. (이외는 모두 외부 통신)

 - Network List엔 Standard ACL만 있음.

 

 

ACL 개념 및 추가 출처

There are two types of IPv4 ACLs:

  • Standard ACLs: These ACLs permit or deny packets based only on the source IPv4 address.
  • Extended ACLs: These ACLs permit or deny packets based on the source IPv4 address and destination IPv4 address, protocol type, source and destination TCP or UDP ports, and more.

For example, Example 4-3 shows how to create a standard ACL. In this example, ACL 10 permits hosts on the source network 192.168.10.0/24. Because of the implied “deny any” at the end, all traffic except for traffic coming from the 192.168.10.0/24 network is blocked with this ACL.

https://www.ciscopress.com/articles/article.asp?p=3089353&seqNum=7

반응형

+ Recent posts