Categories
Computer Network

리눅스 DHCP 서버의 설치 및 설정 방법

아래 명령으로 DHCP 서버를 설치한다.

sudo apt install isc-dhcp-server

DHCP 서버의 설정 파일은 /etc/dhcp/dhcpd.conf 이다. 이 파일을 백업한다.

sudo mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak

같은 이름으로 새로운 설정 파일을 만든다.

sudo vi /etc/dhcp/dhcpd.conf

아래와 같은 내용을 입력한다. 해시 표시 (#) 뒤에 있는 설명 부분은 입력하지 않아도 된다.

# IP 주소 임대 시간은 600초이다.
default-lease-time 600;
# 최대 IP 주소 임대 시간은 2시간이다.
max-lease-time 7200;
# 해당 DHCP 서버가 공식적인 서버임을 의미한다.
authoritative;

# 서브넷을 정의한다.
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.201 192.168.0.220;    # 할당할 IP 주소의 범위
  option routers 192.168.0.1;   # 디폴트 게이트웨이의 IP 주소
  option domain-name-servers 8.8.8.8, 8.8.4.4;    # DNS 서버의 IP 주소
}

특정 클라이언트가 항상 똑같은 IP 주소를 할당받도록 해 보자. 이 경우에 해당 클라이언트의 MAC 주소가 필요하다.

아래 명령으로 MAC 주소를 알아낸다.

ip addr show

서브넷을 정의한 괄호 안에 아래 내용을 추가한다.

host client-221 {
  hardware ethernet 69:41:10:91:11:22;    # MAC 주소
  fixed-address 192.168.2.221;    # IP 주소
}

다음은 /etc/dhcp/dhcpd.conf 파일의 전체 내용이다.

default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.201 192.168.0.220;
  option routers 192.168.0.1;
  option domain-name-servers 8.8.8.8, 8.8.4.4;

  host client-221 {
    hardware ethernet 69:41:10:91:11:22;
    fixed-address 192.168.2.221;
  }
}

DHCP 서버의 또다른 설정 파일은 /etc/default/isc-dhcp-server 이다. 이 파일은 DHCP 서버와 네트워크 인터페이스를 바인딩하는 역할을 한다. 이러한 바인딩은 DHCP 서버에 여러 개의 네트워크 인터페이스가 있을 경우에 필요하다.

/etc/default/isc-dhcp-server 파일을 열고 아래와 같은 내용으로 작성한다.

INTERFACESv4="enp4s0"
INTERFACESv6=""

enp4s0 은 네트워크 인터페이스 이름이다. DHCP 서버는 이 인터페이스를 통해 클라이언트 요청에 응답하게 된다.

모든 설정을 마쳤다. 변경한 내용을 적용하기 위해 DHCP 서버를 재시작한다.

sudo systemctl restart isc-dhcp-server

DHCP 서버의 동작 상태를 확인해 보자.

sudo systemctl status isc-dhcp-server

Categories
JavaScript

POST 요청 방식에 의한 Ajax 프로그램 작성하기

Ajax 를 이용한 프로그램을 작성해 보자. 이 프로그램은 서버에 POST 방식의 요청을 한다. 서버에 문자열을 전송한다. 서버의 PHP 스크립트는 문자열의 길이를 계산하여 웹브라우저로 보낸다.

프로그램은 count.html 파일과 count.php 파일로 구성된다.

아래와 같이 count.html 파일을 작성한다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax POST 요청</title>
<script>
// 자바스크립트 코드가 삽입되는 부분
</script>
</head>
<body>
  <div id="response">응답 메시지</div>
  <form id="userForm">
    <input type="text" name="string">
    <button type="button" onclick="countCharacters()">문자수 세기</button>
  </form>
</body>
</html>

countCharacters() 함수를 작성하자.

함수 정의를 시작한다.

function countCharacters() {

XMLHttpRequest 객체를 생성한다.

var xmlhttp = new XMLHttpRequest();

xmlhttp 객체의 인스턴스를 생성한다. POST 방식으로 요청한다. count.php 는 요청을 처리하는 서버 스크립트 파일이다.

xmlhttp.open(“POST”, “count.php”);

readystatechange 이벤트의 이벤트 리스너를 정의한다.

xmlhttp.onreadystatechange = function () {
  // 요청이 완료되었는지 확인한다.
  // 요청이 성공적인지 확인한다.
  if (this.readystate == 4 && this.status == 200) {
    // 서버로부터의 응답 메시지를 HTML 엘리먼트에 삽입한다.
    document.getElementById("response").innerHTML = this.responseText;
  }
};

폼 데이터를 변수에 저장한다.

var userForm = document.getElementById(“userForm”);

var userData = new FormData(userForm);

요청을 서버로 보낸다.

xmlhttp.send(userData);

함수 정의를 마친다.

}

이상의 내용을 연결하면 다음과 같다.

function countCharacters() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("POST", "count.php");
  xmlhttp.onreadystatechange = function () {
    if (this.readystate == 4 && this.status == 200) {
      document.getElementById("response").innerHTML = this.responseText;
    }
  };
  var userForm = document.getElementById("userForm");
  var userData = new FormData(userForm);
  xmlhttp.send(userData);
}

이 함수를 <script> 태그 안에 포함시킨다.

count.php 파일은 count.html 파일로부터 POST 요청을 받아 처리하는 파일이다.

아래와 같이 count.php 파일을 작성한다.

<?php
if (isset($_POST['string'])) {
  $string = trim($_POST['string']);
  // 문자열의 길이를 구해 변수에 저장한다.
  $count = strlen($string);
  // 응답 메시지를 웹브라우저에 보낸다.
  echo $string . " 의 문자 개수: " . $count . " 개";
} else {
  // $_POST['string'] 변수가 세팅되어 있지 않을 경우 처리할 수 없다.
  echo "처리 불가";
}
?>

count.html 파일과 count.php 파일을 웹서버에 저장한다. 두 파일을 같은 디렉토리에 저장해야 한다.

웹브라우저로 count.html 파일을 읽어들인다. ‘문자수 세기’ 버튼을 눌러서 POST 요청이 제대로 동작하는지 확인해 보자.

Categories
JavaScript

GET 요청 방식에 의한 Ajax 프로그램 작성하기

Ajax 를 이용한 프로그램을 작성한다. 프로그램은 문자열을 입력받아 문자의 개수를 알려준다.

프로그램은 count.html 파일과 count.php 파일로 구성된다.

아래와 같이 count.html 파일을 작성한다.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ajax GET 요청</title>
<script>
// 자바스크립트 코드가 삽입되는 부분
</script>
</head>
<body>
<div id="response">응답 메시지</div>
<button type="button" onclick="countCharacters()">문자수 세기</button>
</body>
</html>

countCharacters() 함수를 작성하자.

함수 정의를 시작한다.

function countCharacters() {

XMLHttpRequest 객체를 생성한다.

var xmlhttp = new XMLHttpRequest();

xmlhttp 객체의 인스턴스를 생성한다. count.php 파일에 xtmci 라는 문자열을 전달한다. 전달할 때 string 이라는 이름을 사용한다.

xmlhttp.open(“GET”, “count.php?string=xtmci”);

readystatechange 이벤트의 이벤트 리스너를 정의한다.

xmlhttp.onreadystatechange = function () {
  // 요청이 완료되었는지 확인한다.
  // 요청이 성공적인지 확인한다.
  if (this.readystate == 4 && this.status == 200) {
    // 서버로부터의 응답 메시지를 HTML 엘리먼트에 삽입한다.
    document.getElementById("response").innerHTML = this.responseText;
  }
};

요청을 서버로 보낸다.

xmlhttp.send();

함수 정의를 마친다.

}

이상의 내용을 연결하면 다음과 같다.

function countCharacters() {
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.open("GET", "count.php?string=xtmci");
  xmlhttp.onreadystatechange = function () {
    if (this.readystate == 4 && this.status == 200) {
      document.getElementById("response").innerHTML = this.responseText;
    }
  };
  xmlhttp.send();
}

이 함수를 <script> 태그 안에 포함시킨다.

count.php 파일은 count.html 파일로부터 GET 요청을 받아 처리하는 파일이다.

아래와 같이 count.php 파일을 작성한다.

<?php
if (isset($_GET['string'])) {
  $string = trim($_GET['string']);
  // 문자열의 문자 개수를 구해 변수에 저장한다.
  $count = strlen($string);
  // 응답 메시지를 웹브라우저에게 보낸다.
  echo $string . " 의 문자 개수: " . $count . " 개";
} else {
  // $_GET['string'] 변수가 세팅되어 있지 않으므로 처리할 수 없다.
  echo "처리 불가";
}
?>

count.html 파일과 count.php 파일을 웹서버에 저장한다. 두 파일을 같은 디렉토리에 저장해야 한다.

웹브라우저로 count.html 파일을 읽어들인다. ‘문자수 세기’ 버튼을 눌러서 GET 요청이 제대로 처리되는지 확인해 보자.

Categories
FFmpeg

우분투에서 FFmpeg 설치하기

FFmpeg 을 설치하기 전에 시스템의 패키지 리스트를 업데이트한다.

sudo apt update

ffmpeg 패키지를 설치한다.

sudo apt install ffmpeg

설치가 끝난 후에 FFmpeg 의 버전을 확인해 보자.

ffmpeg -version

출력 결과를 통해 버전 정보 뿐만 아니라 다양한 컴파일 옵션도 확인할 수 있다.