[시놀로지] ssh root 계정 권한 획득


나스 관리자계정으로 ssh 접속을 한 다음에 sudo -i 명령으로 루트 계정 획득이 가능합니다.

login as: myadmin

myadmin@192.168.1.100's password:

Could not chdir to home directory /var/services/homes/myadmin: No such file or directory

myadmin@mynas:/$ sudo -i

Password:

root@mynas:~#

root 권한으로 명령어를 실행해야 할 것이 많다면 권한을 획득한 다음에 작업하는게 편합니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[시놀로지] phpMyAdmin 특정 IP에서만 접속 허용하기


Synology 에 phpmyadmin 을 설치하고 특정 아이피 또는 외부가 아닌 로컬 네트워크에서만 접속이 가능하게 하려면,

nginx 설정을 변경하고 재시작 하면 됩니다.

먼저 ssh 터미널을 활성화 시키고 접속합니다.


$ sudo vi /etc/nginx/conf.d/www.phpMyAdmin.enable.conf 편집

location ^~ /phpMyAdmin/ {

    allow 192.168.1.0/24;

    deny all;

    ...

}

$ sudo synoservice --restart nginx 재시작

허용하려는 ip 목록을 작성하면 됩니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[리눅스] PHP SESSION 저장 안되는 문제


아파치에서 VirtualHost 를 다른 소유자로 변경하고 재시작 했더니 잘되던 phpmyadmin 에서 아래와 같은 오류가 뜨더군요~

mod_ruid2 모듈과 함께 사용중인데 원인을 찾는데 함참 걸렸네요~

import.php: Missing parameter: import_type

import.php: Missing parameter: format

세션이 저장되는 폴더 /var/lib/php/session 폴더의 퍼미션을 777로 바꾸어도 안되더니 가만 생각해 보니 그 안에 원래 있던 세션 파일의 소유자가 달라서 그렇더군요~

해당 파일을 지우고 하니 잘 됩니다~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] Android 8.1 SDK 27 FCM PUSH 알림 문제


안드로이드 8.1 오레오 이상 버전에서 푸쉬는 오는데 알림 소리가 안울리는 문제가 있네요~

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.PowerManager;
import android.support.v4.app.NotificationCompat;
import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FCMMessageService extends FirebaseMessagingService {
private static final String TAG = "FCMMessageService";
static String registration_id = null;

@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
if (remoteMessage.getData().size() > 0) {
sendNotification(remoteMessage.getData().get("message"));
}
}

private void sendNotification(String messageBody) {
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_ONE_SHOT);

Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = null;
NotificationManager notificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String channelId = "default_channel_id";
String channelDescription = "Default Channel";
NotificationChannel notificationChannel = notificationManager.getNotificationChannel(channelId);
if (notificationChannel == null) {
int importance = NotificationManager.IMPORTANCE_HIGH;
notificationChannel = new NotificationChannel(channelId, channelDescription, importance);
notificationChannel.setLightColor(Color.GREEN);
notificationChannel.enableVibration(true);
notificationManager.createNotificationChannel(notificationChannel);
}
notificationBuilder = new NotificationCompat.Builder(this, channelId);
} else {
notificationBuilder = new NotificationCompat.Builder(this);
}
notificationBuilder
.setSmallIcon(R.drawable.noti_icon)
.setContentTitle(getString(R.string.app_name))
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);

PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakelock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
wakelock.acquire(5000);
notificationManager.notify(0, notificationBuilder.build());
}
}

SDK 버전이 올라갈때 마다 가지가지 하네요~ ㅎ


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[시놀로지] DSM HTTPS 보안인증서 발급


브라우저로 Synology DSM 에 접속시 http 로 접근하면 아무래도 보안에 취약합니다.

https 를 사용하여야 하는데 유효하지 않은 인증서라고 나오는게 보기가 싫습니다.

보안인증서를 letsencrypt 로 무료발급 하는 방법입니다.

[시놀로지] DSM HTTPS 보안인증서 발급


위와 같이 설정하고 브라우저로 https 로 접속하면 아래처럼 "인증서 정보가 부족하므로 이 인증서를 확인할 수 없습니다." 라고 나옵니다.

[시놀로지] DSM HTTPS 보안인증서 발급


제어판 => 보안 => 인증서 탭으로 이동하여 추가 버튼을 누릅니다.

[시놀로지] DSM HTTPS 보안인증서 발급


새 인증서 추가나 기존 인증서 교체를 선택하고 다음을 누릅니다.

[시놀로지] DSM HTTPS 보안인증서 발급

저는 새 인증서 추가를 선택하였습니다.


Let's Encrypt에서 인증서 얻기를 선택하고 기본 인증서로 설정을 체크하고 다음을 누릅니다.

[시놀로지] DSM HTTPS 보안인증서 발급


도메인 이름과 이메일을 입력하고 적용을 누릅니다.

[시놀로지] DSM HTTPS 보안인증서 발급

도메인은 ddns 를 사용하면 됩니다.


구성을 눌러서 시스템 기본 설정에서 synology.com 대신에 발급된 인증서를 연결하여 줍니다.

[시놀로지] DSM HTTPS 보안인증서 발급

확인을 누르면 웹서비스가 재시작 되고 정상적인 인증서로 접속이 됩니다.



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법


Synology DSM 에 iSCSI Manager 가 있습니다.

필요한 가상디스크의 사이즈 만큼 LUN 을 특정 볼륨에 생성하고 윈도우와 연결에 사용할 Target 을 생성합니다.

[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

IQN은 iqn.YYYY-MM.com.synology:디바이스.식별ID 이런씩으로 만들면 됩니다.

암호화가 필요하다면 CHAP 활성화를 체크하고 계정과 비밀번호를 12~16자 사이로 입력합니다.


이제 윈도우에서 iSCSI 초기자를 실행합니다.

[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

포털 검색을 클릭해서 NAS 서버의 IP 주소를 입력하고 확인을 누릅니다.

iscsi 는 3260 TCP Port 를 사용하는데 로컬에서만 동작이 됩니다.

포트포워딩을 설정해도 외부 네트워크에서는 접속이 안되더군요~


[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

대상 탭으로 가면 위에서 설정한 타겟이 보입니다.

연결을 누릅니다.


[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

CHAP 을 활성화 했다면 고급을 눌러서 로그온 정보를 입력합니다.


[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

CHAP 로그온 정보 사용을 체크하고 해당 이름과 대상 암호를 입력하고 확인을 누릅니다.


[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

이제 연결이 되었으면 컴퓨터 관리의 저장소 디스크 관리로 갑니다.


[윈도우10] 시놀로지 iSCSI 가상디스크 연결 방법

파티션을 생성하고 사용하면 됩니다.



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[CentOS] vnstat 갱신이 안되는 문제


같은 버전의 CentOS 7.x 버전에서 vnstat 을 설치했는데 어떤 서버는 괜찮고 어떤 서버는 아래와 같이 갱신이 안되네요~

vnstat -d 명령어로 "enp2s0: Not enough data available yet." 와 같은 메시지가 뜬다면 /var/log/message 를 확인해보세요~

Mar 17 05:02:40 example vnstatd: Info: Monitoring: enp2s0 (1000 Mbit)

Mar 17 05:02:40 example vnstatd: Error: Unable to open database "/var/lib/vnstat/enp2s0" for writing: Permission denied

Mar 17 05:02:40 example vnstatd: Error: Unable to write database, continuing with cached data.


/var/log/message 파일에 위와 같은 에러가 있다면 /var/lib/vnstat/ 폴더에 이더넷 파일의 소유권을 확인해 보세요~


# ls -l /var/lib/vnstat/

total 4

-rw-r--r-- 1 root root 2792 Mar 18 16:14 enp2s0

root 로 되어 있다면 vnstat 으로 변경해 줍니다.

chown vnstat.vnstat /var/lib/vnstat/enp2s0


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

OneDrive CrystalDiskMark 속도 체크


MS 원드라이브를 네트워크 드라이브로 잡아서 크리스탈디스크마크로 벤치를 해보았습니다.

순차 읽기 속도가 1500MB/s 가 나왔는데 기가인터넷 네트워크 대역폭 보다 훨씬 더 높게 나온것 같네요~

아마도 캐시버퍼를 사용해서 실제 속도 보다 더 높게 측정된 듯 합니다.

구글 드라이브도 쓰기 벤치는 막혀있는지 확인이 안되지만 읽기 벤치는 원드라이브랑 비슷하게 나옵니다.

OneDrive CrystalDiskMark 속도 체크

쓰기 속도는 그렇게 빠르지는 않지만 USB 2.0 랑 비슷하게 나와주네요~


비교 대상으로 SKT 클라우드베리도 한번 측정해보았습니다.

SKT 클라우드베리 속도

쓰기 속도가 285MB/s 가 나왔는데 정말 이 속도라면 좋겠네요~ ㅎ

아쉽게도 기가인터넷 대역폭으론 최대 125MB/s가 한계입니다.

OneDrive CrystalDiskMark 속도 체크

하드디스크에서 원드라이브로 파일 복사시 최대 20MB/s 속도가 나왔습니다.


OneDrive CrystalDiskMark 속도 체크

원드라이브에서 하드디스크로 파일 복사시 최대 97MB/s 속도가 나오는군요~


클라우드를 네트워크 드라이브로 로컬디스크 처럼 백용 용도로 사용해도 크게 문제가 없어보입니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

phpMyAdmin 로그인 세션 시간 변경



phpMyAdmin 에 접속하고 얼마되지 않았는데도 세션이 금방 만료가 됩니다.

로그인 쿠키 유효시간이 default 1440 초, 분으로 24분으로 되어있기 때문입니다.

$cfg['Servers'][$i]['auth_type']     = 'cookie';

 ==>

$cfg['Servers'][$i]['auth_type']     = 'http';

cookie 를 http 로 변경하여도 되지만, 나중에 재로그인시 바뀐 URL 주소로는 정상적으로 로그인이 안되는 현상이 생깁니다.


▶ /etc/phpMyAdmin/config.inc.php 수정


...

$cfg['VersionCheck'] = FALSE;

$cfg['LoginCookieValidity'] = 43200;

?>

위와 같이 $cfg['LoginCookieValidity'] 값에 적당한 시간 값을 초단위로 넣어주면 됩니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[CentOS] 네임서버 1차 2차 3차 구축 방법


서브 도메인이 많은 경우라면 네임서버(DNS)를 직접 구축해서 운영하는게 편하고 단순히 www 만 서비스 한다면 도메인 업체의 네임서버를 이용하는게 편합니다.

직접 운영하려면 도메인의 네임서버 호스트를 구축하려는 1차, 2차, 3차 IP로 지정하여야 합니다.

# yum -y install bind bind-chroot bind-libs bind-utils


bind 설치 후 환경설정을 1차에서 zone 파일 수정시 2차, 3차까지 동기화 되도록 합니다.


▶ 1차, 2차, 3차 /etc/named.conf 수정

options {

        version "Unknown";

        allow-transfer { 2차ip; 3차ip; }

        allow-recursion { localhost; any; };

        allow-query-cache { localhost; any; };

        listen-on port 53 { 127.0.0.1; any; };

        //listen-on-v6 port 53 { ::1; };

        directory       "/var/named";

        dump-file       "/var/named/data/cache_dump.db";

        statistics-file "/var/named/data/named_stats.txt";

        memstatistics-file "/var/named/data/named_mem_stats.txt";

        recursing-file  "/var/named/data/named.recursing";

        secroots-file   "/var/named/data/named.secroots";

        allow-query     { localhost; any; };

        recursion yes;

}

allow-transfer 는 1차 네임서버 /etc/named.conf 에만 있으면 됩니다.


▶ 1차, 2차, 3차 /etc/rndc.key 1차와 동일하게 설정


▶ 1차 /etc/named.rfc1912.zones 편집

zone "example.com" IN {

        type master;

        file "example.com.zone";

        allow-update { 2차ip; 3차ip; };

};


▶ 2차, 3차 /etc/named.rfc1912.zones 편집

zone "example.com" IN {

        type slave;

        file "example.com.zone";

        masters { 1차IP; };

};


▶ 환경설정 확인

# named-checkconf -z

1차에서 설정한 도메인이 리스트에 나오는지 확인합니다.


그리고 기존의 zone 파일 있다면 지우면 됩니다.

아니면 chown named.named /var/named/*.zone 명령어로 퍼미션을 조정하여야 2차 네임서버에서 파일 갱신이 됩니다.


위와 같이 잘 설정이 되었다면 1차 네임서버에서 named 를 재시작하면 2차 네임서버의 /var/named/*.zone 파일이 동기화가 됩니다.

하지만 텍스트 파일이 아닌 바이너리 파일 형태로 넘어갑니다.

zone 파일을 동기화를 하지 않는다면 rsync 유틸로 동기화 해서 cron 으로 named 를 재시작 해도 될 것 같습니다.



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,