안녕하세요.
오늘은 [2024][Juniper SRX #15] commit and rollback 관련 명령어 대해서 알아보겠습니다.
Juniper 장비는 Cisco랑 다르게 commit 명령어를 실행하지 않으면 설정값 명령어들이 적용이 되지 않습니다.
Ex) Cisco Side
en
conf t
int g0/0
ip add 10.1.1.1 255.255.255.0
no sh
명령어 입력 할 때마다 곧바로 적용됩니다. 하지만 저장되지는 않습니다.
저장하기 위해서는 write memory 또는 copy running-config startup-config 저장해야 합니다.
Ex) Juniper
set interface ge-0/0/0 unit 0 family inet address 10.1.1.1/24
입력하면 설정값이 적용되지 않고 저장도 되지 않습니다.
commit 명령어를 입력해야지 적용됩니다 그리고 commit 동시에 저장도 됩니다.
**********************************
Change Configuration --> Condidate Configuration ----> active configuration
Ex) 만약에 설정값을 추가 삭제 변경 했으며 condidate configuration
Ex) 만약에 Commit를 눌렀으면 active configuration
commit check: 설정값에 이상이 있는지 확인
commit: 설정값 적용 및 저장
commit at: 특정 시간에 commit수행
commit confirmed: 설정값을 commit수행하지만 10분 안에 다시 commit를 수행하지 않으면 이전 설정값으로 돌아갑니다.
commit confirmed 1: 디폴트 값이 10분인데 이 값을 1분으로 변경
자세한 내용은 Juniper 공식 사이트 확인 부탁드립니다.
테스트해 보겠습니다.
토폴로지
ge-0/0/1에 192.168.1.1/24 설정해 보겠습니다.
기본 설정 다 지우기
root> configure Entering configuration mode [edit] root# delete This will delete the entire configuration Delete everything under this level? [yes,no] (no) yes [edit] root# set system or ^ syntax error. root# set system root-authentication plain-text-password New password: Retype new password: [edit] root# commit commit complete [edit] root# |
ge-0/0/0 192.168.1.1/24 설정하기
root# set interfaces ge-0/0/0 unit 0 family inet address 192.168.1.1/24 root# run show interfaces terse | match ge-0/0 ge-0/0/0 up up ge-0/0/1 up up ge-0/0/2 up up |
위에 보시면 commit를 누르지 않으면 설정값이 적용되지 않습니다.
현재 어떤 명령어가 commit를 대기 중인지 확인하는 방법
root# show | compare [edit] + interfaces { + ge-0/0/0 { + unit 0 { + family inet { + address 192.168.1.1/24; + } + } + } + } [edit] root# |
만약에 이 상태에서 exit로 밖으로 나가면 위에 설정값은 사라집니다.
root# exit The configuration has been changed but not committed Exit with uncommitted changes? [yes,no] (yes) |
no를 선택합니다
commit check은 commit 하기 전에 추가적으로 설정값이 맞는지 확인합니다. 만약에 commit check 없이 바로 commit 했을 때 설정값에 문제가 있다면 error메시지가 출력되면서 commit이 실패합니다.
root# commit check configuration check succeeds [edit] root# |
commit 실행
root# commit commit complete [edit] root# exit Exiting configuration mode root> show interfaces terse Interface Admin Link Proto Local Remote ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.1.1/24 gr-0/0/0 up up ip-0/0/0 up up lsq-0/0/0 up up lt-0/0/0 up up mt-0/0/0 up up sp-0/0/0 up up sp-0/0/0.0 up up inet inet6 sp-0/0/0.16383 up up inet ge-0/0/1 up up ge-0/0/2 up up dsc up up fti0 up up fxp0 up up gre up up ipip up up irb up up lo0 up up lo0.16384 up up inet 127.0.0.1 --> 0/0 lo0.16385 up up inet 10.0.0.1 --> 0/0 10.0.0.16 --> 0/0 128.0.0.1 --> 0/0 128.0.0.4 --> 0/0 128.0.1.16 --> 0/0 lo0.32768 up up lsi up up mtun up up pimd up up pime up up pp0 up up ppd0 up up ppe0 up up st0 up up tap up up vlan up down root> |
재부팅합니다. juniper는 commit 하면 명령어 적용과 저장이 됩니다.
재부팅해서 설정값이 유지되는지 확인해 보겠습니다.
request system reboot
부팅이 완료될 때까지 기다립니다.
root> request system reboot Reboot the system ? [yes,no] (no) yes *** FINAL System shutdown message from root@ *** System going down IMMEDIATELY Stopping cron. . |
부팅이 완료되면 Interface ge-0/0/0 ip를 확인해 보면 그대로 설정 값이 남아 있습니다.
login: root Password: Last login: Sun Jun 23 09:53:36 on ttyu0 --- JUNOS 21.3R1.9 Kernel 64-bit XEN JNPR-12.1-20210828.6e5b1bf_buil root@:~ # root@:~ # root@:~ # cli root> root> show interfaces terse | match ge-0/0 ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.1.1/24 ge-0/0/1 up up ge-0/0/2 up up |
commit and-quit - commit를 수행하고 configuration 모드에서 나갑니다.
root# set system host-name srx [edit] root# commit and-quit commit complete Exiting configuration mode root@srx> |
commit confirmed - hostname firewall 변경하고 commit 수행합니다. 그리고 10분 안에 commit이 다시 한번 없으면 이전 상태로 돌아갑니다.
root@srx# set system host-name firewall [edit] root@srx# commit ? Possible completions: <[Enter]> Execute this command activate Activate a previously prepared commit and-quit Quit configuration mode if commit succeeds at Time at which to activate configuration changes check Check correctness of syntax; do not apply changes comment Message to write to commit log confirmed Automatically rollback if not confirmed peers-synchronize Synchronize commit on remote peers prepare Prepare for an upcoming commit activation | Pipe through a command [edit] root@srx# commit confirmed commit confirmed will be automatically rolled back in 10 minutes unless confirmed commit complete # commit confirmed will be rolled back in 10 minutes [edit] root@firewall# |
테스트를 위해서 10분을 기다립니다. 10분 안에 commit이 없으면 host-name은 이전 설정값은 srx로 변경됩니다.
10분안에 commit을 하지 않았기 때문에 설정값이 이전으로 rollback 되었음
Broadcast Message from root@srx (no tty) at 10:25 UTC... Commit was not confirmed; automatic rollback complete. [edit] root@srx# |
이번에는 테스트를 위해서 commit confirmed 1으로 하고 1분 안에 commit를 수행합니다.
1분이 지나도 설정값이 rollback 되지 않습니다.
root@srx# set system host-name firewall [edit] root@srx# commit confirmed 1 commit confirmed will be automatically rolled back in 1 minutes unless confirmed commit complete # commit confirmed will be rolled back in 1 minute [edit] root@firewall# commit commit complete [edit] root@firewall# |
commit at를 테스트해 보겠습니다
12:00:00에 commit를 수행합니다.
[edit] root@firewall# set system host-name srxsrx root@firewall# commit at 12:00:00 configuration check succeeds commit at will be executed at 2024-06-23 12:00:00 UTC The configuration has been changed but not committed Exiting configuration mode root@firewall> |
이번에는 Rollback에 대해서 알아보겠습니다.
설정값 원복(rollback)
설정값을 기존 설정값으로 원복수행(rollback 후 반드시 commit를 수행해야 완료됨)
설정값을 commit 할 때마다 rollback이 생성됩니다.
rollback 0 - 마지막 commit이후 변경한 설정값을 초기화
rollback 1 - 마지막 commit이전 설정값을 원복
rollback 2 - 2번째 전 commit이전 설정값으로 원복
commit 할 때마다 rollback으로 생성되는데 그 시점을 알고 싶을 때 확인 명령어
Possible completions: <revision> Rollback to given configuration revision re0-1719138399-8 2024-06-23 10:26:40 UTC by root via cli re0-1719138393-7 2024-06-23 10:26:36 UTC by root via cli commit confirmed, rollback in 1mins re0-1719138344-6 2024-06-23 10:25:47 UTC by root via other re0-1719137740-5 2024-06-23 10:15:43 UTC by root via cli commit confirmed, rollback in 10mins re0-1719137710-4 2024-06-23 10:15:13 UTC by root via cli re0-1719137288-3 2024-06-23 10:08:11 UTC by root via cli re0-1719136430-2 2024-06-23 09:54:02 UTC by root via cli re0-1719135583-1 2024-06-23 09:41:04 UTC by root via other [edit] root@firewall# rollback revision |
rollback에 어떤 명령어가 포함되었는지 확인하는 방법
commit at 명령어가 포함되었습니다.
root@firewall# show | compare rollback 0 [edit system] - host-name firewall; + host-name srxsrx; [edit] root@firewall# |
테스트를 해보겠습니다
interface ge-0/0/0 ip 삭제합니다.
root@firewall# delete interfaces ge-0/0/0 [edit] root@firewall# commit commit complete [edit] root@firewall# exit Exiting configuration mode root@firewall> root@firewall> show interfaces terse | match ge-0/0 ge-0/0/0 up up ge-0/0/1 up up ge-0/0/2 up up |
현재 설정값이랑 commit전에 설정값 비교
root@firewall# show | compare rollback 1 [edit] - interfaces { - ge-0/0/0 { - unit 0 { - family inet { - address 192.168.1.1/24; - } - } - } - } |
Rollback후 interface ge-0/0/0 ip주소 확인
root@firewall# rollback 1 load complete [edit] root@firewall# commit commit complete [edit] root@firewall# run show interfaces terse | match ge-0/0 ge-0/0/0 up up ge-0/0/0.0 up up inet 192.168.1.1/24 ge-0/0/1 up up ge-0/0/2 up up [edit] root@firewall# |
rollback 0에 의미
추가설정 없이 show | compare rollback 0 아무것도 없음
현재 설정이랑 rollback 0 설정값이 똑같음
root@firewall# show | compare rollback 0 [edit] |
호스트 이름 변경 하지만 commit 하지 않음
host-name srx변경했지만 commit 하지 않았음
현재 condidate-configuration은 hostname srx로 보이고
현재 active-configuration(rollback 0) hostname firewall이기 때문에
다른 부분을 아래에 표시해 줌.
설정을 잘못해서 commit 하기 싫을 때 rollback 0를 누릅니다.
또는 delete system host-name 사용해도 되지만, 명령어가 20줄이라면 rollback 0로 삭제하는 것이 편리합니다.
root@firewall# set system host-name srx root@firewall# show | compare rollback 0 [edit system] - host-name firewall; + host-name srx; [edit] root@firewall# |
rollback 숫자 없음 의미는 rollback 0를 의미
rollback 0은 commit이 필요 없음,
이제 condidate-configuration이랑 active-configuration이랑 똑같아서 아래에 show | compare rollback 0를 입력하면
아무것도 없음
root@firewall# rollback load complete [edit] root@firewall# show | compare rollback 0 [edit] root@firewall# |
지금까지 [2024][Juniper SRX #15] commit and rollback 글을 읽어주셔서 감사합니다.
'JUNIPER > SRX 방화벽' 카테고리의 다른 글
[2024][Juniper SRX #16] password recovery (0) | 2024.07.28 |
---|---|
[2024][Juniper SRX #14] firewall policy 순서 변경 (0) | 2024.07.26 |
[2024][Juniper SRX #13] firewall policy (0) | 2024.07.25 |
[2024][Juniper SRX #12] application and application-set (2) | 2024.07.24 |
[2024][Juniper SRX #10] Administrator access restriction settings for MGMT (0) | 2024.07.22 |