일일 정리

Trunk Routing, Aliases, ssh key, PHP 반복문 While

mysecurity 2025. 1. 31. 17:39

목차

1. Trunk Routing

 

2. Aliases

 

3. ssh key

 

4. PHP 반복문 While

 

 

1. Trunk Routing

이전에 알아보았던 Trunk를 이용해 라우터와 스위치를 잇는 통로를 하나로 축소할 수 있다.

다음과 같이 스위치에서 기가비트이더넷 포트를 트렁크모드로 바꾸고, 라우터에서 기가비트이더넷 g0/0을 g0/0.10, g0/0.20... 과 같이 가상 인터페이스를 나누어 각각 ip를 할당할 수 있다.

여기서는 이전에 만들었던 환경을 수정하여 사용하였으므로 기존에 vlan에 할당되어 있던 기가비트이더넷 인터페이스를 할당 취소하는 과정을 먼저 진행했다.

 

Trunk Routing 구현 1

 

encapsulation dot1q [# of vlan]

: 인터페이스에 다중 vlan 처리가 가능하도록 설정한다.

 

다음은 위의 심화과정으로 다수의 스위치를 라우터에 연결하는 상황을 구현했다.

 

Trunk Routing 구현 2

 

2. Aliases

리눅스에서도 위와 같이 하나의 인터페이스를 여러 개의 인터페이스인 척 하여 여러 ip를 세팅할 수 있다.

IP aliases는 하나의 물리적인 인터페이스를 여러 개의 논리적인 인터페이스로 구현하여 IP를 여러 개 설정하는 방법이다.

 

1.  /etc/sysconfig/network‐scripts/ifcfg‐ens160 파일을 이용한다.

: ifcfg‐ens160을 ifcfg‐ens160:0,  ifcfg‐ens160:1 등으로 복사한 이후 각각 다른 디바이스와 IP를 설정한다. 서브넷마스크 주소는 동일하거나 달라도 상관없다. 설정 후 nic를 리셋한다.

 

2. ifconfig 명령을이용한다.

: ifconfig  ens32:0  192.168.10.32

 

위의 1번 방법은 설정하기도 복잡할 뿐더러 오타라도 나면 인터넷이 다시 살아나지 않아 불편하고 위험하다. 때문에 주로 간편하고 안전한 2번의 방법을 사용한다.

 

ALiases를 이용해 ens160 인터페이스에 두 개의 ip를 설정한 모습

 

3. ssh key

ssh 통신에서는 공개키와 개인키를 이용해 통신을 한다. 이러한 통신에서

내 개인키로 암호화한 것은 내 공개키로만 복호화가 가능하다. = 전자 서명

내 공개키로 암호화한 것은 내 개인키로만 복호화가 가능하다. = 기밀 통신

 

PUTTY에서 서버에 접속할 때 다음과 같은 키 생성 기능을 이용하여 그 서버에 로그인과정 없이 로그인할 수 있다.

 

PUTTY가 위치한 파일에서 pyttygen을 찾아 들어간다.

 

'Generate' 를 눌러 공개/비밀키를 생성할 수 있다.

 

위에 공개키가 나오고 'Save private key'를 눌러 비밀키를 원하는 위치에 저장할 수 있다.

 

우선 기존대로 서버에 접속해 위의 파일에 공개키를 입력해 저장한다. 디렉토리가 없다면 생성 후 진행한다.

 

putty에서 들어가려는 서버에 대해 위와 같이 개인키 파일을 넣는다.

 

'Data'에서 서버에 바로 로그인할 계정이름을 입력한다.

 

이후 서버에 접속하면 별도의 로그인 과정 없이 바로 사용자 로그인이 완료된다.

 

4. PHP 반복문 While

while (조건) {
      실행문;
 }

 

조건이 참인 동안 실행문이 반복되어 실행된다. 반복을 벗어나려면 조건을 변경하거나 break 문이 필요하며, 없다면 무한 반복된다. 

 

 $a = 1;                    	// 초기식 
while ($a <= 10) {		// 조건 
      echo(" {$a}<br> ");     	// 명령문
      $a++;                    	// 증감식
}

 

모든 반복문은 '초기식, 조건, 명령문, 증감식' 이 4가지 구성을 지닌다.

 

<html>
<head>
<title>test01.php</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<?
  $a = 1;
  while ($a <= 10){
     echo("{$a}<br>");
     $a++;
  }
?>
<br><hr><br>
<?
show_source(__FILE__);		// '__FILE__'은 파일 자기 자신을 뜻하는 상수이다. 현재 파일의 코드를 출력한다.
?>

</body>
</html>

 

' __FILE__'은 자기 자신을 뜻하는 상수이다. 변수가 메모리 구역의 이름이라면 상수는 값 그 자체를 뜻한다.

<? show_source(__FILE__); ?> 구문을 통해 파일의 코드를 출력할 수 있다.

 

이를 활용하여 다음과 같이 num과 a를 입력받아 1부터 num까지 a의 배수의 합을 구하는 프로그램을 짜볼 수 있다.

 // num과 a를 입력받아 1부터 num까지 a의 배수의 합을 구하는 프로그램 HTML코드 // 
 
 <html>
 <head>
 <title>ex1.2.1.html 입력 폼파일</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 </head>
 <form method="post" action="ex1.2.1.php">
    어디까지? : <input type="text" name="num"><br>
    몇 배수? : <input type="text" name="a"><br>
        <input type="submit" name="확인" value="확인">
 <input type="reset" name="취소" value="취소"><br>
 </form>
 <hr>
 <?  show_source(__FILE__); ?>
 </html>
 // num과 a를 입력받아 1부터 num까지 a의 배수의 합을 구하는 프로그램 PHP코드 // 

<html>
<head>
<title>ex1.2.1.php</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body>
<?
  $num = $_POST["num"]; 
  $k = $_POST["a"];
  $sum = 0;                 
  $a = 1 ;  
    
    if($num > 0) {               
        while($a <= $num) {    
            if($a % $k == 0){
                $sum = $sum + $a;
            }

            $a++;            
        }
        echo("1에서 {$num}까지의 {$k}의 배수의 합은 {$sum}입니다.");
    }
    else  echo("
    <script>
    window.alert('값이 올바르지 않습니다.');		
    history.go(-1);	// 알림의 확인 버튼을 누르면 이전 창으로 돌아간다.
    </script>
   ");
  echo("<hr>");
  show_source(__FILE__);
 ?>
</body>
</html>