flywithu

Seunghee's Story

ipTime 라우팅 테이블 관리를 통한 VPN 연결

ipTime의 공유기를 보면 아래와 같은 ‘라우팅 테이블 관리’가 있다. 이게 무슨 메뉴인지 몰랐는데 이번에 알게 되어서, 이렇게 글을 남긴다.

예전에 아래와 같은 글을 남긴적이 있다.
https://wiki.flywithu.com/display/PUB/VPN+Hub+Setting
이것이 지금은 아래처럼 바뀌었다.
https://wiki.flywithu.com/display/PUB/VPN+HUB+2

기존에는 클라이언트별로 수동으로 GW IP를 잡아 주었으나,
TARGET IP에 따라서 라우팅을 바뀌게 설정 하였다.
예를 들어 Youtube는 VPN을 타고 나가도록 설정을 하였다.
(Youtube는 인도를 경유하는게 좋다.)
그리고 주기적으로 라즈베리파이 mangle 정보를 iptime 공유기로 업데이트 하게 하였다.

이렇게 적용을 하면 아래와 같이 ipsearch.kr는 VPN을 경유하고, 다른 경로는 원래 GW를 이용하게 되서 다른 IP를 보여주게 된다.

Tracert의 결과는 아래와 같이 192.168.10.1로 갔다가, 192.168.10.5로 라우팅되어서 나가게 된다.

crontab 에 넣어 놓아서 주기적으로 갱신된다.

root@raspbx:/etc/openvpn# cat fixrouter.sh
#!/bin/bash
IPTIMEID="IPTIMEID"
IPTIMEPW="IPTIMEPW"
IPTIMEGW="192.168.10.1"
TARGETGW="192.168.10.5"
IPTIMEADDR=http://$IPTIMEID:$IPTIMEPW@$IPTIMEGW/cgi-bin/timepro.cgi

echo ${IPTIMEADDR}

/usr/sbin/iptables -t mangle -F PREROUTING
/usr/sbin/iptables -t mangle -A PREROUTING --dst www.ipsearch.kr -j MARK --set-mark 0x2


while true;
do
  CMD=$(curl -d "tmenu=iframe&smenu=natrouterconf_router_status&act=delete&delchk=0" -H "Content-Type: application/x-www-form-urlencoded" -X POST ${IPTIMEADDR} | html2text | grep HOST |wc -l)
  echo "RESULT: $CMD"
 [ "$CMD" -le 0 ] && break;
done
/usr/sbin/iptables -L -n -v -t mangle |  grep 'MARK'| awk -v IPTIMEADDR=${IPTIMEADDR} -v TARGETGW=${TARGETGW} 'BEGIN{split(TARGETGW,TARGETGW_ADDR,".");print "HELLO START" TARGETGW_ADDR[4]} {split($9,a,".");print "========================================" TARGETGW_ADDR[1] ":" a[1] "-" a[2] "-" a[3] "-" a[4] ; system("curl -d \"tmenu=iframe&smenu=natrouterconf_router_setup&act=add&delchk=&rtselect=host&netmask=&targetip1="a[1]"&targetip2="a[2]"&targetip3="a[3]"&targetip4="a[4]"&gw1="TARGETGW_ADDR[1]"&gw2="TARGETGW_ADDR[2]"&gw3="TARGETGW_ADDR[3]"&gw4="TARGETGW_ADDR[4]"\" -H \"Content-Type: application/x-www-form-urlencoded\" -X POST "IPTIMEADDR);}'   > /tmp/result.txt 2>&1
IPTABLE -t mangle
공유기는 로그인 과정을 간단하게 하기 위해 HTTP Basic을 이용한다.
iptime 라우팅 테이블이 이렇게 추가가 된다. 이 IP들은 다시 라우팅 된다.
  • 전체적인 동작은 다음과 같다.
    • 192.168.10.1 IP TIME GW에 패킷이 도착한다.
    • 라우팅 테이블에 해당하면 192.168.10.5 로 포워딩 된다.
    • 192.168.10.5 에서 TARGET에 따라 MANGLE 에 MARK가 된다.
    • 이 값에 따라 여러 네트워크(VPN 별)로 포워딩이 된다.
    • VPN을 타고 나간다.