kh교육

(20250718018)IP설정 변경, 리눅스 클론, php

boangod 2025. 7. 18. 17:23

IP 설정 변경

 

IP 변경

 

# ip addr change/delete [ip/mask] dev [NIC] 

  • 영구 설정 아님
  • change는 add와 동일함으로 기존 IP는 del 해야 한다.
  • 이거 쓰면 ip가 추가가 된다, 지우려면 delete

예)

# ip addr change 192.168.11.21/24 dev ens224

 

 

Gateway 변경

 

# ip route [add|del|change] default via [gateway ip] dev [NIC]

영구적인 설정이 아님

 

예)

# ip route change default via 192.168.11.245 dev ens224

 

 

Local DNS 변경

 

• /etc/resolv.conf 파일 수정

-  수정하면 바로 적용된다.

 

 

지금쓰는 명령어는 리부팅하면 다 날라갑니다...

 

위에 명령어로 ip바꿔보기 실습.

 

 

ip a show ens224 | grep ens224

ip a change 192.168.11.156/24 dev ens224

ip a show ens224 | grep ens224

ip a del 192.168.11.157 dev ens224     ip a del 192.168.11.157/24 dev ens224

ip a show ens224 | grep ens224

ip link set ens224 down && ip link set ens224 up ← 껏다가 키면

ip a show ens224 | grep ens224 ← 파일에 저장한것이 아니기때문에 원래 설정으로 돌아감

 

 

 

디폴트 게이트웨이 바꿔보기

 

[root@Linux156 ~]# ip route change default via 192.168.10.254 dev ens160

RTNETLINK answers: No such file or directory

 

이런 오류가 뜰건데 이유는

작업하는 내용과 작업한 내용이, 커널이 확인했을때 이상하기 떄문에 안할꺼라는 뜻입니다.

change명령에서만 이런 현상이 일어납니다.

(네트워크상에는 254가 없는거 같은데 왜 이렇게 바꿔?? 나 안할꺼야!)

 

 

IP 설정 변경 : 항구적 변경

 

시스템 설정을 바꾸는것은 보통 systemctl많이 사용함

 

/etc/sysconfig/network-scripts/ifcfg-NIC 파일 편집 (살아있는동안에는 절대 건들지 않기)

 

 

  • 네트워크 재 시작이 필요하다.
  • 기존 ip는 직접 삭제해야 한다.
  • 이런 불편은 nmtui나 nmcli등을 이용하면 해소할 수 있다.

 

네트워크 재시작

# systemctl restart NetworkManager.service

 

Hostname 변경

# hostnamectl set-hostname [호스트명]

• shell 재시작 필요 : # exec bash 또는 exec $SHELL

 

 

밑에 방법이 가장 일반적으로 바꾸는법

 

실습

ip link set ens224 down && ip link set ens224하면 설정이 초기화된것을 볼수 있습니다.

 

Warning: Executing wildcard deletion to stay compatible with old scripts. Explicitly specify the prefix length (192.168.11.156/32) to avoid this warning. This special behaviour is likely to disappear in further releases, fix your scripts!

 

이런 경고가 나왔는데 제가 뒤에 /24(cidr)를 붙히지 않아서 일어난 오류인거 같습니다.

이 특별한 자동 처리(wildcard)는 앞으로 사라질 예정이라고 합니다.

 

 

 

ARP

 

전체 ARP 테이블 확인 ip neighbor show | ip n
특정 인터페이스의 ARP 테이블 확인  ip n show dev [NIC]
특정 IP의 ARP 정보 확인 ip n show [IP]
ARP 엔트리 수동 추가 ip n add [IP] lladdr [MAC] dev [NIC]
특정 ARP 엔트리 삭제 ip n del [IP] dev [NIC]
ARP 테이블 초기화 ip n flush all
특정 인터페이스의 ARP 테이블 초기화 ip n flush dev [NIC]

 

arp 스푸핑때문에 mac주소를 강제로 입력하는 경우도 있다.

 

예시)

# ip n show 192.168.11.1

# ip n show dev ens224

# ip n add 192.168.11.200 lladdr 00:1c:2d:3e:4f:5g dev ens224

# ip n del 192.168.11.100 dev ens224

# ip n flush dev ens224

 

 

REACHABLE : 최근 패킷 전송, 상대와 통신 가능

STALE : MAC은 존재, 일정 시간 동안 통신 없음

DELAY : 응답 대기 중 (5초)

PROBE : ARP 요청을 보내는 중

FAILED : ARP 응답을 받지 못함

PERMANENT : 직접 입력됨

 

 

 

arp 테이블 수동으로 조작

 

ip n

ip n add 192.168.10.1 lladdr 58:86:94:49:b7:3c dev ens160

ip n del 192.168.10.1 dev ens160

ip n add 192.168.10.1 lladdr 58:86:94:49:b7:3c dev ens160

ip n

ip n flush all

ip n

 

이미 arp가 있으니까 add로 추가 등록하기 실패

삭제 후 수동으로 등록하면 PERMANENT로 상태가 바뀜.

재시작하면 PERMANENT초기화 됩니다.(리부팅전까지는 지워지지 않습니다.)

 

 

ip n del 192.168.10.1 dev ens160 ← 완전 삭제 방법

 

 


 

리눅스 복제(clone)

 

스냅샵으로 돌려도 용량이 줄어들지는 않는다

 

클론을 만드는 이유

  • 리눅스를 맨날 깔아서 쓰는게 귀찮음.
  • 시스템을 백업하는 목적으로
  • 등..

 

새로운 리눅스 다운로드!

기존에 있던 리눅스를 지우고 새로 다시 다운로드 합니다.

기존 디스크를 지우고, 새로운 디스크(Sata)50G, ip는 156, bridge로 설정하고 만들어줍니다.

이제 이 리눅스가지고 클론을 만들어 사용할것입니다.

 

이제 리눅스를 처음 실행했을때 해줄 명령어를 입력해줄것입니다.

 

rm -f /etc/issue.d/cockpit.issue

rm -f /etc/motd.d/cockpit

 

vi /etc/selinux/config

ㄴ SELINUX=disabled

 

systemctl disable firewalld.service

systemctl stop firewalld.service

 

(확인하기)

ifconfig

netstat -nr

cat /etc/resolv.conf

systemctl is-enabled firewalld.service

systemctl is-active firewalld.service

sestatus

 

압축해서 파일을 가지고있으면 이제 들고다니면서 사용할수 있습니다.

 

이제 만든 가상머신을 클론을 사용해서 계속 만들것입니다.

클론은 원래 기존 가상머신과 mac주소가 같기때문에 꼭 제너레이트 해주셔야 합니다.

 

/etc/hosts

 

C:\Windows\System32\drivers\etc

ㄴ 윈도우에서의 /etc/hosts

 

DNS 서버 없이도 로컬에서 도메인 이름을 특정 IP로 해석가능합니다.

 


PHP

 

switch 문

 

- Switch 문은 값이 일치하는 case 절을 실행하기 위한 분기문

 

switch (변수 또는 수식) {

case 값1 :

문장1;

문장2;

...

break;

case 값2 :

문장1;

문장2;

...

break;

...

default :

문장1;

문장2; ...

}

 

  • Switch문은 조건을 판별하는 것이 아니라 변수 또는 수식의 값을 판별해서 일치하는 case절
  • Case 값에는 변수가 올 수 없습니다.
    - Case 값에는 변수 이외 제약 사항이 없습니다.
    - 실수, 문자 등 다양한 값이 가능

- break;를 쓰지 않으면 이하의 모든 실행문이 실행됩니다.

- break; 문은 제어문이나 순환문으로부터 탈출합니다.

- 일치하는 값이 없을 경우 default에 정의된 문장을 실행하고 switch문이 종료합니다.

 

실습

 

 

<html>
 <head>
 <title>입력 폼파일</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 </head>
 <body>
<form method="post" action="02_11.php">
학년을 입력하세요(예 1,2) : <input type="text" name="syear"><br>
<input type="submit" name="확인" value="확인">
</form>
</body>
 </html>

 

 

<?
$syear = $_POST["syear"];
switch ($syear) {
 case 1:
 echo("당신은 {$syear} 학년입니다.");
 break;
 case 2:
 echo("당신은 2 학년입니다.");
 break;
 case 3:
 echo("당신은 3 학년입니다.");
 break;
 case 4:
 echo("당신은 4 학년입니다.");
 break;
 default :
 echo("학년을 잘못 입력했습니다.");
}
?>
<?
  echo("<br><hr><br>");
  show_source(__FILE__);
?>

 

 

 

ceil = 지정된 값보다 큰 정수를 출력해주는 것.

ceil(0.1) = 1

ceil(0.9) = 1

ceil(1.2) = 2

 

$sal = 90

ceil($sal/100) → ceil(90/100) → ceil(0.9) = 1

 

실습

 

급여계산 프로그램 2-4.html

 

<html>
<head>
<title>2-3.html 급여 입력 폼파일</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<form method="post" action="2-4.php">
 현재 급여를 입력 하세요 : <input type="text" name="sal">만원<br>
 <input type="submit" name="확인" value="확인">
<input type="reset" name="취소" value="취소"><br>
</form>
</html>

 

 

2-4.php

<?
$sal = $_POST["sal"];
$con = ceil($sal/100);
switch ($con){
case 1:
	$sal = round($sal*1.15);
 	echo(" 당신의 내년 급여는 15% 인상된 {$sal}만원입니다.");
 	break;
case 2:
	$sal = round($sal*1.1);
 	if ($sal >= 115) 
 		echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
 	else
 		echo(" 당신의 내년 급여는 115만원입니다.");
 	break;
case 3:
	$sal = round($sal*1.05);
	if ($sal >= 220) 
		echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
	else
		echo(" 당신의 내년 급여는 220만원입니다.");
	break;
case 4:
	$sal = round($sal*1.02);
	if ($sal >= 315) // 3 등급 인상 후 최대 급여 315만원
		echo(" 당신의 내년 급여는 10% 인상된 {$sal}만원입니다.");
	else
		echo(" 당신의 내년 급여는 315만원입니다.");
	break;
default :
	if ($sal >= 408) // 2 등급 인상 후 최대 급여 408만원
		echo(" 당신의 내년 급여는 동결된 {$sal}만원입니다.");
	else
		echo(" 당신의 내년 급여는 408만원입니다.");

}
?>
<?
  echo("<br><hr><br>");
  show_source(__FILE__);
?>

 

ceil는 실무에서도 많이 사용되니까 잘 알아두면 좋습니다.

 

 

반복문

 

- 조건에 일치하는 동안 실행부를 반복적으로 실행하도록 하는 문법 요소

 

while (조건) {

실행문;

}

 

  • 조건이 참인 동안 실행문이 반복되어 실행된다.
  • 반복을 벗어나기 위해서는 실행문내에 조건을 변경하거나 break문이 필요하다.
  • 조건에 변화가 없으면 무한 반복된다.
  • 조건은 실행문이 반복될 때 마다 반복해서 실행된다.

반복문은 항상 4가지 요소를 가집니다.

  1. 초기식
  2. 조건
  3. 명령문
  4. 증감식

 

실습 

 

sum.html

<html>
 <head>
 <title>3-1.html 입력 폼파일</title>
 <meta http-equiv="content-type" content="text/html; charset=utf-8">
 </head>
 <form method="post" action="sum.php">
    1보다 큰 값을 입력하세요 : <input type="text" name="num"><br>
        <input type="submit" name="확인" value="확인">
 <input type="reset" name="취소" value="취소"><br>
 </form>
 <hr>
 </html>

 

sum.php

<?
  $num = $_POST["num"]; 
  $a = 1 ;  
  if($num > 1) {               
     while($a <= $num) { 
           echo" {$a}";
           $a++;       
      }
   }
  else echo("입력 값이 올바르지 않습니다.");
  echo("<hr>");
  show_source(__FILE__);
 ?>