KT 인터넷 추가단말 팝업 문제

2018. 4. 6.

입력하는 URL에 /?만 붙이면 딜레이 없이 접속할 수 있다는 점에 착안하여 자동으로 해 줄 수 있는 방법을 고민해봤다. URL 입력 후 딜레이가 있으면 URL입력란을 클릭하여 /?를 뒤에 붙여주면 바로 접속이 되었는데, 이게 너무 귀찮아서 자동으로 입력되게…

우리가 사용하는 브라우저 크롬은 엄청난 익스텐션을 제공해준다. 그렇다 우린 크롬을 사용한다. ^^

여기에서 아래 extension을 받아서 크롬에 설치한다. 이름 하여 Redirector!

Chrome Extension: Redirector

입력된 URL의 특정 부분을 원하는 방식으로 변경할 수 있게 해 주는 툴이다. From 부분에 Regular expression을 넣고 To 부분에 변경된 값을 넣어주면 입력하는 URL에 모두 적용이 된다.

아래와 같이 하나만 입력해주면 /로 끝나는 모든 URL뒤에 ?를 붙여준다. 그러면 딜레이 없이 바로 바로 접속되는 페이지들을 볼 수 있을 것이다.

Redirector 설정

http로 시작하고 /로 끝나는 (또는 /?로 끝나는) 모든 URL 뒤에 /?를 붙여준다.

From: ^http://(.*)/[?]*$
To: http://$1/?

https 페이지들은 문제가 없는것 같아서 일단 넣지 않았는데, 걸리는 페이지가 있다면 추가해도 무방할 듯 싶다.


2018. 2. 5.

DNS 변경 방법은 기존에 됐었는데, 지금은 다시 막혔다. 기존엔 팝업을 띄우던 것을 이제는 브라우저 창에 바로 추가단말 구입하라고 내용을 출력해버린다.

일단 해당 내용을 띄우는 서버를 차단해버리면 해당 내용은 나오지 않지만, 접속이 느려지는 단점이 있다.

분석을 좀 해보니 DNS에서 ip를 얻어올 때 장난치는건 아니었다. HTTP request나갈 때 상대방 서버 주소로 제대로 request가 나가지만, 403 forbidden 패킷으로 응답이 오면서 retransmission이 발생한다. 계속 retransmission이 나오다가 기다리다보면 어느 순간 접속이 된다. 이런 현상을 보면 접속하려는 서버 대신에 KT가 중간에서 응답을 해버리는 것 같다.

그리고 링크를 클릭하는 것은 막지 않는다. 네이버든 다음이든 링크 눌러서 접속하는 것은 딜레이가 없다.

http는 차단이 되는 반면, https는 아무 문제가 없다. 네이버, 다음 등 모두 https로 이용하면 당분간은 또 쓸 수 있을 듯…

UA를 모바일로 변경하면 괜찮을 것 같지만… 음..

URL 뒤에 ?를 붙이는 것도 유효하다. http://naver.com/? 식으로… 그런데 항상 이렇게 쓰긴 너무 불편하고..


KT인터넷을 몇 년 째 사용 중이다. 이런 적이 한번도 없었는데 최근 갑자기 추가단말 또는 오피스 IP 팩에 가입하라며 웹 서핑 중 팝업을 수시로 띄운다. 요새 단말 한두대만 쓰는 사람이 어디 있다고 이렇게 하는건지 모르겠지만, 정책이 그런가보다 하면서 넘어가려고 해도 팝업이 너무 거슬려서 해결책을 찾아보기로 했다. 물론 돈을 더 내고 쓰는 것은 해결 방법이 아니라고 생각하고, 정 방법이 없으면 다른 사업자로 갈아타면 되니까…

KT 인터넷 추가단말 팝업
  1. AdBlock Plus를 통한 팝업 차단
  2. 공유기에서 해당 팝업을 띄우는 서버에 접속 못하도록 차단
  3. DNS를 Google Public DNS로 변경

1, 2번의 경우는 브라우징을 할 때 팝업은 뜨진 않지만, 뭔가 반응이 느려진다. 예를들어 daum.net을 입력하면 daum.net/? 사이트로 redirect되면서 페이지가 표시되는데, 아마도 이런 과정을 거치면서 딜레이가 생기는 것 같다.

3번 방법은 KT의 DNS를 사용하지 않고 Google이 제공하는 Public DNS를 사용하도록 변경하는 것이다. 이렇게 변경을 하면 응답도 빨라지고 /? 붙은 사이트로 redirect되지도 않는다.

동일한 문제를 겪는 사용자들은 DNS 서버 주소를 한 번 바꿔보면 어떨까 싶다.

참고로 Google의 DNS 주소는, 아래 이미지와 같이 8.8.8.8, 8.8.4.4를 넣어주면 된다.

Windows DNS 설정
Mac DNS 설정

패킷을 잡아보고 확인해보면 좋겠지만, 지금의 난 그런 열정 까지는 없다.. -_-

라즈베리파이 부팅시 FTP통해 IP 알림 받기

라즈베리파이를 public 망에 물려서 공인 IP를 받아 쓰기 시작했다. 공인 IP를 받으면 어디서든 제약 없이 접근할 수 있으니 따로 서버 호스팅을 하는 것과 동일한 효과를 볼 수 있다. 공인 IP에 도메인을 연결해두면 도메인으로도 접근이 잘 된다.

라즈베리파이는 입출력 장치 없이 사용하는 서버이므로 부팅시 IP를 알려주는 방법이 필요해서 찾아봤는데, 처음 검색된 것이 gmail smtp를 이용하여 메일로 알림을 주는 것이다.

이것이 잘 되면 좋을텐데, 구글에서 비 보안 어플리케이션이 접근한다면서 보안 경고를 보내온다. 좀 꺼림직하여 다른 방법을 찾아봤다.

다음으로 시도해본것이 scp를 이용하여 ip를 다른 서버에 알려주는 것이다. authorized_keys도 입력을 해 두고 비번 없이 scp가 되도록 설정을 해 두었는데 이상하게 잘 안된다. pi 계정, root 계정 모두 pub key를 등록해봐도 안된다. rc.local에 스크립트를 추가하는 방식이었는데 될 것 같은데 안되는…

다음으로 시도해본게 NAS에 ftp로 ip 주소를 전송하는 방법이다. 라즈베리파이가 부팅하면서 ip.html 이라는 파일을 만들고 이를 ftp를 이용하여 NAS에 전송한다. NAS에 http로 접근하면 해당 주소를 web으로 바로 확인할 수 있다. cron 작업에 하루에 한번 IP를 리포트하도록 설정을 했다. 깔끔하게 동작한다.

pi@raspberrypi:~ $ cat startup.sh 
#!/bin/bash
HOST='nas.server.net'
USER='nas_ftp_id'
PASSWD='nas_password'
FILE='ip.html'

cd /home/pi

hostname -I > $FILE
date >> $FILE

ftp -n $HOST << END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd /web
put $FILE
quit
END_SCRIPT

위 스크립트는 ip address를 ip.html 파일에 기록한 후 ftp로 server로 전송하는 스크립트이다. 본인 상황에 맞게 수정하여 사용하면 될 것 같다.

부팅시 위 스크립트를 실행하기 위해 rc.local 파일에 다음 라인을 추가했다.

pi@raspberrypi:~ $ cat /etc/rc.local 
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
  /home/pi/startup.sh # 라인 추가
fi

exit 0

하루에 한 번 실행되도록 cron에도 추가해줬다.

pi@raspberrypi:~ $ crontab -l
# Edit this file to introduce tasks to be run by cron.
# 
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
# 
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
# 
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
# 
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
# 
# For more information see the manual pages of crontab(5) and cron(8)
# 
# m h  dom mon dow   command
0 4 * * * /home/pi/startup.sh