1.1 systemctl 사용법
systemd 에서는 기본 control은 systemctl 이지만 이외에도 사용되어지는 command들이 존재하며 이부분은 이전 내용참조
- systemctl 와 이외 사용되어지는 명령어 사용법
- systemctl 사용법
- networkctl 사용법
- timedatectl 사용법
systemctl 및 이외 명령 관련내용 참조 (반드시 참고)
https://ahyuo79.blogspot.com/2017/03/systemctl.htmlsystemctl Manual
https://www.freedesktop.org/software/systemd/man/systemctl.html#
2. systemd의 Unit 구성 및 종류
- Unit의 종류 (11개의 종류이지만 필요한것만 사용)
- *.service units : 주로 daemon 과 일반 process로 구성
- *.socket units: IPC or Socket 기반의 활동 (encapsulate동작)
- *.target units: Unit들을 group 화 하고 boot 동기화를 할때 유용
- *.device units: Kernel device를 사용할 경우 udev sys
- *.mount units: filesystem 안에 mount point
- *.automount units: filesystem의 automount
- *.timer units: 다른 unit의 timer기반의 trigger로 사용
- *.swap units: mount unit 과 유사하며 memory sway 과 OS의 file (encapsulate동작)
- *.path units: path 기반으로 변경될 때 동작되는 구조
- *.slice units: group unit으로 scope와 service를 계층으로 관리가 가능
- *.scope units: service unit과 거의 유사하지만 외부 process 관리목적
상위 이외에도 systemd.exec 및 systemd.kill 존재하는데, 중복이 되는 것을 알수 있으며, 각 실행파일이 있으므로,
모든 Section의 Directives의 Index에서 세부파악하자
systemd 기반의 Init 관련된 부분 (SysVinit 과 차이)
https://www.freedesktop.org/software/systemd/man/init.html#
사용용도가 특별한용도로 정해진것 아래에서 확인필요 (반드시 확인)
상위 timedatectl 명령어 참조
systemd의 NTP (timesyncd)
https://stackframe.tistory.com/16
https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html
https://wiki.archlinux.org/index.php/systemd-timesyncd
timedatectl (상위 링크참조)
https://ahyuo79.blogspot.com/2017/03/systemctl.html
timedatectl (manual and example)
http://man7.org/linux/man-pages/man1/timedatectl.1.html
http://man7.org/linux/man-pages/man1/systemd-firstboot.1.html
https://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command/
2.5 SSH Server 설정 및 동작
2.6 SysV 기반의 Network 설정 (Systemd 같이사용)
모든 Section의 Directives(Option) Index (중요)
- Unit의 역할이 이미 정해진 것들 반드시 확인
systemd 기반의 Init 관련된 부분 (SysVinit 과 차이)
https://www.freedesktop.org/software/systemd/man/init.html#
사용용도가 특별한용도로 정해진것 아래에서 확인필요 (반드시 확인)
https://www.freedesktop.org/software/systemd/man/systemd.special.html#
2.1 Unit의 기본구성 및 문법
Unit의 기본 문법구성은 Section 과 Directive(Option)으로 설정이 가능하며 관련 Manual을 찾아서 각 기능을 보자
systemd 의 기본문법 및 구조소개
https://www.freedesktop.org/software/systemd/man/systemd.syntax.html#
Unit Section 과 Unit의 Directives(Option) 기능확인
2.1 Unit의 기본구성 및 문법
Unit의 기본 문법구성은 Section 과 Directive(Option)으로 설정이 가능하며 관련 Manual을 찾아서 각 기능을 보자
systemd 의 기본문법 및 구조소개
https://www.freedesktop.org/software/systemd/man/systemd.syntax.html#
- 기본으로 Service 부분 Simple 예
$ cat *.service or *.target ## 주석 [Unit] ## Section 이라고함 Description=Wait for Network to be Configured ## Section의 Directive or Options 이라고함 Documentation=man:systemd-networkd-wait-online.service(8) DefaultDependencies=no [Service] ## Section에 따라 Directive의 기능이 달라지므로 주의 Type=oneshot [Install] ## 모든 Unit이 필요한것이 아니므로 주의 WantedBy=multi-user.target
상위 Service의 기본 분석은 아래의 두개로 시작을 하면 될 것이다.
System Unit Search PATH부터 정확히 파악하고 각각의 설정을 파악
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
Service Section 과 Service의 Directives(Option)기능확인
https://www.freedesktop.org/software/systemd/man/systemd.service.html#
https://www.freedesktop.org/software/systemd/man/systemd.unit.html
https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files
Service Section 과 Service의 Directives(Option)기능확인
https://www.freedesktop.org/software/systemd/man/systemd.service.html#
- 세부분석을 위한 참조사항
상위에서 설명했듯이 세부분석시 중요
모든 Section의 Directives(Option) Index
https://www.freedesktop.org/software/systemd/man/systemd.directives.html
systemd의 사용되어지는 File index
https://www.freedesktop.org/software/systemd/man/index.html
https://www.freedesktop.org/software/systemd/man/systemd.target.html#
2.2 Unit 의 기본분석
Systemd의 Unit는 다양하므로 본인이 원하는 기능을 볼때 동작 여부와 종속성을 확인하여 정확하게 어떻게 동작하는지 파악하자.
systemd-analyze 부분 아래 참조
https://ahyuo79.blogspot.com/2017/04/systemd-analyze.html
https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd-analyze.1
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html
2.3 기본 Service Unit 문법
기본 Service Example
https://stackoverflow.com/questions/47293195/running-systemd-unit-directly-after-local-fs-target-and-before-basic-target
https://www.freedesktop.org/software/systemd/man/systemd.service.html
각 Section 과 Directive 한글설명
https://fmd1225.tistory.com/93
https://wiki.archlinux.org/index.php/systemd
https://wiki.archlinux.org/index.php/systemd#Targets
https://www.freedesktop.org/wiki/Software/systemd/
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
2.4 NTP Client 설정
systemd의 NTP Client 설정은 아래와 같이 기본으로 timesyncd에서 담당한다.
systemd의 사용되어지는 File index
https://www.freedesktop.org/software/systemd/man/index.html
- Target Unit
https://www.freedesktop.org/software/systemd/man/systemd.target.html#
2.2 Unit 의 기본분석
Systemd의 Unit는 다양하므로 본인이 원하는 기능을 볼때 동작 여부와 종속성을 확인하여 정확하게 어떻게 동작하는지 파악하자.
systemctl 및 이외 명령 관련내용 참조 (반드시 참고)
https://ahyuo79.blogspot.com/2017/03/systemctl.html- 각 Unit Linux 분석 (target)
$ systemctl list-units --type target // target을 분석 (화살표키로 움직임가능)
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
getty.target loaded active active Login Prompts
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
machines.target loaded active active Containers
multi-user.target loaded active active Multi-User System
network.target loaded active active Network
nss-lookup.target loaded active active Host and Network Name Lookups
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
slices.target loaded active active Slices
sockets.target loaded active active Sockets
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
- 각 Unit 의 종류 및 동작상태 확인
$ systemctl list-units --type target | grep target // target을 분석 (나열식) 상위와 동일 $ systemctl list-units --type target --state active // 보통 Service를 Target중심으로 하면 Active되었는지 확인 or $ systemctl list-units --type target --state active | grep target $ systemctl list-units --all --full | grep ".device" // device을 세부분석 (나열식으로 전체를 볼수있음) dev-disk-by\x2did-mmc\x2d00000_0x0cf64c62.device loaded active plugged /dev/disk/by-id/mmc-00000_0x0cf64c62 dev-disk-by\x2did-mmc\x2d00000_0x0cf64c62\x2dpart1.device loaded active plugged /dev/disk/by-id/mmc-00000_0x0cf64c62-part1 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart1.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part1 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart2.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part2 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart3.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part3 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart4.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part4 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart5.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part5 dev-disk-by\x2did-mmc\x2dS0J57X_0x184f6793\x2dpart6.device loaded active plugged /dev/disk/by-id/mmc-S0J57X_0x184f6793-part6 dev-disk-by\x2dlabel-boot.device loaded active plugged /dev/disk/by-label/boot .....
- Target Unit의 종속성확인
$ systemctl status // 현재 systemd의 실행상태확인 가능하며, 종속성 확인 (주의: 실행한 후 종료된 것은 제외됨) ........ $ systemctl list-dependencies --all // 전체 종속관계 확인 ..... $ systemctl list-dependencies multi-user.target // 전체구조파악 하며, 이 안에서 다시 세부 Target 분석 ..... $ systemctl list-dependencies sockets.target // sockets.target 분석하며, 일반적인 Server Bind 분석 ..... $ systemctl list-dependencies network-online.target // network-online.target 종속부분확인 network-online.target ● └─systemd-networkd-wait-online.service
- 상위 Target 종속성을 확인 후 관련 서비스 확인
$ cat /lib/systemd/system/systemd-networkd-wait-online.service // network-online.target에 관련된 service분석 # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Wait for Network to be Configured Documentation=man:systemd-networkd-wait-online.service(8) DefaultDependencies=no Conflicts=shutdown.target Requires=systemd-networkd.service After=systemd-networkd.service Before=network-online.target shutdown.target [Service] Type=oneshot ExecStart=/lib/systemd/systemd-networkd-wait-online RemainAfterExit=yes [Install] WantedBy=network-online.target $ readelf -a /lib/systemd/systemd-networkd-wait-online // 말그대로 network가 online이 될때까지 기다리는 실행파일
- systemd-analyze 분석 (중요)
systemd-analyze 부분 아래 참조
https://ahyuo79.blogspot.com/2017/04/systemd-analyze.html
https://jlk.fjfi.cvut.cz/arch/manpages/man/systemd-analyze.1
- network.target 및 관련내용
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html
2.3 기본 Service Unit 문법
$ vi *.service [Unit] Description=Mx Encrypted Folder Requires=local-fs.target After=local-fs.target ## Requires 와 After 설정 중요하며, 종속(dependency)이 아니라면 Requreis 제거 ## After 의 local-fs.target Local File System Mount 된 시점 ## After 의 network.target (network.target 진입 후 ) ## After 의 network-online.target (network 가 연결될 경우) [Service] Type=oneshot ExecStart=/usr/bin/mxmountencrypted RemainAfterExit=true ExecStop=/usr/bin/mxunmountencrypted ## ExecStart 이 서비스가 시작시 ## ExecStop 이 서비스를 systemctl stop으로 중지가능 ## RemainAfterExit yes or no로 Exit되어도 유지하는지 설정 (아래 Directives Index 참조) ## StandardOutput=journal (systemd-journal log로 사용) [Install] WantedBy=multi-user.target ## WantedBy or RequiredBy= [Install] Section에서 주로 사용된다 ## 더불어 각각 *.wants 와 .requres directory에 심볼링크를 생성한다 ## 이 대표적인 예가 systemctl enable/disable 설정이 될 것 같다.
기본 Service Example
https://stackoverflow.com/questions/47293195/running-systemd-unit-directly-after-local-fs-target-and-before-basic-target
https://www.freedesktop.org/software/systemd/man/systemd.service.html
각 Section 과 Directive 한글설명
https://fmd1225.tistory.com/93
- 내가 만든 service 기본서비스
$ vi *.service //systemd 가 network를 물리적으로 online 된 경우 실행 ## Unit Section [Unit] Description=Setup and Start my Service After=network-online.target Wants=network-online.target ## After network-online.target 후 동작가능 (HW Network가 동작가능) ## Wants 충분조건이라고 함 Requires가 필요조건 [Service] Type=simple ExecStart=/usr/bin/setup.sh Restart=on-failure ## ExecStart 상위 조건을 만족하면 실행 ## Restart=on-failure 비정상 종료면 다시 실행 or ## Restart=always , 상위는 비정상 종료일 경우만 실행이지만, 이는 항상 무조건 실행 ## RestartSec=1 매번 Restart시 1s Delay [Install] WantedBy=multi-user.target
https://wiki.archlinux.org/index.php/systemd
https://wiki.archlinux.org/index.php/systemd#Targets
https://www.freedesktop.org/wiki/Software/systemd/
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/
2.4 NTP Client 설정
systemd의 NTP Client 설정은 아래와 같이 기본으로 timesyncd에서 담당한다.
- NTP Client 관련기본설정
$ cat /etc/systemd/timesyncd.conf # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # # Entries in this file show the compile time defaults. # You can change settings by editing this file. # Defaults can be restored by simply deleting this file. # # See timesyncd.conf(5) for details. [Time] #NTP= #FallbackNTP=time1.google.com time2.google.com time3.google.com time4.google.com #RootDistanceMaxSec=5 #PollIntervalMinSec=32 #PollIntervalMaxSec=2048
$ timedatectl show-timesync --all //명령어로 확인 // 이곳에 설정하면 NTP와 DNS를 같이 설정가능 // 이 설정이 상위 NTP에도 적용가능 // 이 설정이 /etc/resolv.conf에 적용가능
systemd의 NTP (timesyncd)
https://stackframe.tistory.com/16
https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html
https://wiki.archlinux.org/index.php/systemd-timesyncd
timedatectl (상위 링크참조)
https://ahyuo79.blogspot.com/2017/03/systemctl.html
timedatectl (manual and example)
http://man7.org/linux/man-pages/man1/timedatectl.1.html
http://man7.org/linux/man-pages/man1/systemd-firstboot.1.html
https://www.tecmint.com/set-time-timezone-and-synchronize-time-using-timedatectl-command/
2.5 SSH Server 설정 및 동작
- SSH Server 설정변경
$ cat /etc/ssh/sshd_config //sftp 지원을 위해 수정 # This is the sshd server system-wide configuration file. See # sshd_config(5) for more information. # This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. # 이곳에서 Port는 설정하지 말자 #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: #HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ed25519_key # Ciphers and keying #RekeyLimit default none # Logging #SyslogFacility AUTH #LogLevel INFO # Authentication: #LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 #PubkeyAuthentication yes # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 # but this is overridden so installations will only check .ssh/authorized_keys AuthorizedKeysFile .ssh/authorized_keys #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes PermitEmptyPasswords yes # Change to yes to enable challenge-response passwords (beware issues with # some PAM modules and threads) ChallengeResponseAuthentication no # Kerberos options #KerberosAuthentication no #KerberosOrLocalPasswd yes #KerberosTicketCleanup yes #KerberosGetAFSToken no # GSSAPI options #GSSAPIAuthentication no #GSSAPICleanupCredentials yes # Set this to 'yes' to enable PAM authentication, account processing, # and session processing. If this is enabled, PAM authentication will # be allowed through the ChallengeResponseAuthentication and # PasswordAuthentication. Depending on your PAM configuration, # PAM authentication via ChallengeResponseAuthentication may bypass # the setting of "PermitRootLogin without-password". # If you just want the PAM account and session checks to run without # PAM authentication, then enable this but set PasswordAuthentication # and ChallengeResponseAuthentication to 'no'. #UsePAM no #AllowAgentForwarding yes #AllowTcpForwarding yes #GatewayPorts no #X11Forwarding no #X11DisplayOffset 10 #X11UseLocalhost yes #PermitTTY yes #PrintMotd yes #PrintLastLog yes #TCPKeepAlive yes #UseLogin no #PermitUserEnvironment no Compression no ClientAliveInterval 15 ClientAliveCountMax 4 #UseDNS no #PidFile /var/run/sshd.pid #MaxStartups 10:30:100 #PermitTunnel no #ChrootDirectory none #VersionAddendum none # no default banner path #Banner none # Jeonghun # changed options for SFTP # override default of no subsystems #Subsystem sftp /usr/libexec/sftp-server Subsystem sftp internal-sftp # Example of overriding settings on a per-user basis #Match User anoncvs # X11Forwarding no # AllowTcpForwarding no # PermitTTY no # ForceCommand cvs server
- SSH Server Port 설정 변경 및 확인
//sshd.service는 별도로 없으며, sshd.socket만 존재하므로 관련부분 검색 $ find /lib -name sshd.socket /lib/systemd/system/sshd.socket $ find /etc -name sshd.socket //sshd.service는 별도로 없으며, sshd.socket만 존재 /etc/systemd/system/sockets.target.wants/sshd.socket $ find /etc -name sshd* //상위로도 못찾을 경우 $ find /lib -name sshd* // systemd 는 /lib -> /etc 찾아실행되므로 최종은 etc 이며, 보통 이럴 경우 link임 $ cat /etc/systemd/system/sockets.target.wants/sshd.socket // sshd.socket에서 직접 port 변경 [Unit] Conflicts=sshd.service [Socket] ExecStartPre=/bin/mkdir -p /var/run/sshd #ListenStream=22 ListenStream=3333 Accept=yes ## 아래의 WantedBy 부분참조하면, ## systemctl enable/disable 할 경우 sockets.target.wants directory에 심볼 link 생성/삭제됨 ## /lib/systemd/system/sshd.socket 기반으로 link 생성/삭제 [Install] WantedBy=sockets.target
- SSH Server Port 적용 및 상태확인
$ systemctl status sshd.socket // sshd.socket 동작상태 확인 or $ systemctl status sshd // sshd.service 동작상태 확인 (현재 없음) $ systemctl daemon-reload $ systemctl restart sshd.socket. //sshd.socket 만 있을 경우 sshd 재시작 or $ systemctl restart sshd //sshd.service 가 있을 경우
- SSH or SFTP 동작안될 경우 재확인
$ netstat -a | grep 3333 // 우선적으로 SSH or SFTP 변경된 Port 동작 검색 tcp 0 0 :::3333 :::* LISTEN $ systemctl status sshd.socket // sshd.socket 상태확인 // 방화벽으로 인한부분 확인 $ iptables -S // Iptables 설정확인 -P INPUT DROP // Iptables INPUT이 DROP이므로 별도 추가 하거나 Policy 변경 -P FORWARD DROP -P OUTPUT ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p icmp -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A OUTPUT -p icmp -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 22 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT -A OUTPUT -p tcp -m tcp --dport 123 -j ACCEPT -A OUTPUT -p udp -m udp --dport 123 -j ACCEPT $ iptables -A INPUT -p tcp --dport 3333 -j ACCEPT // Iptables INPUT 새로변경된 Port 추가 $ iptables -A OUTPUT -p tcp --dport 3333 -j ACCEPT
- SSH or SFTP TEST 진행
$ ssh -p 3333 root@192.168.1.60 $ sftp -P 3333 root@192.168.1.60 //만약 server의 key 정보가 다르다면 ssh-keygen 한 후 재연결 (ssh-keygen -f "/home/jhlee/.ssh/known_hosts" -R 192.168.1.60) sftp> pwd // remote path 확인 sftp> help // 기본 명령어 확인 sftp> get test // remote path의 test file 가져옴 $ sftp -P 3333 root@192.168.1.60:test1 // sftp로 바로 get test1
2.6 SysV 기반의 Network 설정 (Systemd 같이사용)
SysV Script 기반으로는 /etc/network/interfaces 에 Network Interface를 추가하여, service로 각각의 관리를 진행을 했다.
이 부분은 systemd 와 SysV Script를 혼합해서 사용할 경우 알아두도록 하자
- 일반적인 /etc/network/interface 예제 (SysV Script)
SysV Script 기반으로 구성되며, Main은 ifup/ifdown이 전체 Control 하고 각각의 Shell Script 같이 분석해야함
$ cat /etc/network/interfaces //systemd로만 구성할 경우 사용안함 source-directory /etc/network/interfaces.d # The loopback network interface auto lo iface lo inet loopback ## DHCPC Client 예제 auto eth0 iface eth0 inet dhcp ## Static IP 예제 auto eth1 iface eth1 inet static address 192.168.1.11 netmask 255.255.255.0 gateway 192.168.1.1 ## USB hotplug allow-hotplug usb0 iface usb0 inet static address 192.168.3.7 netmask 255.255.255.0 $ ls /etc/network/ //각 Shell Script 과 Interface 확인 if-down.d if-post-down.d if-pre-up.d if-up.d interfaces interfaces.d $ ls /etc/network/if-up.d/ //각각의 Shell script 혹은 Symbol Link 내부에서 $IFACE로 Interface 구분 000resolvconf avahi-daemon ethtool wpasupplicant $ service --status-all //network 관련서비스 name 확인 (SysV Script 사용할 경우 service이용) ... $ sudo service networking restart //network 관련서비스 재실행 or $ systemctl restart networking.service
- ifup/ifdown (상위 설정 및 Shell Script 연결)
$ cat /lib/systemd/system/networking.service //ifup ifdown 이 /etc/network/interfaces 사용 ....... [Install] WantedBy=multi-user.target WantedBy=network-online.target [Service] Type=oneshot EnvironmentFile=-/etc/default/networking ExecStart=/sbin/ifup -a --read-environment ExecStop=/sbin/ifdown -a --read-environment --exclude=lo RemainAfterExit=true TimeoutStartSec=5min
/etc/network/interfaces 관련 좋은예제
/sbin/ifup and ifdown 관련사항
2.7 Systemd 의 Network 설정
처음에 NTP 및 DNS / DHCP 관련부분 설정을 다른 곳에서 설정하려고 했으나 아래와 같이 한곳에서 설정하면 다 적용이 되는 부분을 찾았다.
처음에 NTP 및 DNS / DHCP 관련부분 설정을 다른 곳에서 설정하려고 했으나 아래와 같이 한곳에서 설정하면 다 적용이 되는 부분을 찾았다.
- systemd 로만 network 설정할 경우
systemd의 network interface 설정은 기존과 다른게 systemd-networkd에서 담당한다
만약 systemd로만 구성할 경우 /etc/network/interface의 설정은 불필요한 것으로 보이는데,여기서 설정하지 못하는 것은
추가로 상위와 같이 보완용 ifup/ifdown 기반으로 넣을 수도 있을 것 같다.
systemd로만 network를 구성할 경우 /etc/systemd/network/xxx.network 로 network interface를 추가하고 설정하는 구조이다
일반 MII기반의 ethernet은 ethx.network , USB-CDC 기반의 network는 usbx.network
이외의 network의 이름일 경우 상위와 동일하게 각 interface name으로 설정.
** 주의 우선순위가 될 것이며, /etc 가 가장 높으므로, 이 위주로 설정진행
** 주의 wvdial의 ppp의 경우 이곳에서 설정하지 않음
DefaultRouteOnDevice를 해야지 route table에 default로 등록가능
/etc/systemd/network/eth0.network 설정사항
https://www.freedesktop.org/software/systemd/man/systemd.network.html
/etc/systemd/network/99-default.link (현재 /dev/null 로 link됨)
PMIC의 별도의 Battery Generator 와 i.MX의 RTC기능이며, 배터리로 RTC가 유지가 되어진다.
세부사항은 timedatectl 설정에서 확인가능
https://www.digi.com/resources/documentation/digidocs/90001546/reference/bsp/cc6/r_real_time_clock.htm
https://developer.toradex.com/knowledge-base/how-to-use-the-real-time-clock-in-linux
- eth0 Interface기반 Network DHCP 설정
$ cat /etc/systemd/network/eth0.network [Match] Name=eth0 [Network] DHCP=yes NTP=1.kr.pool.ntp.org DNS=8.8.8.8 DefaultRouteOnDevice=yes
- eth0 Interface기반 Network Static IP설정
$ cat /etc/systemd/network/eth0.network [Match] Name=eth0 [Network] ##Static IP로 직접설정 192.168.1.67/24 24는 NetMask의 bits수 Netmask 255.255.255.0 Address=192.168.1.67/24 Gateway=192.168.1.1 NTP=1.kr.pool.ntp.org DNS=8.8.8.8 DefaultRouteOnDevice=yes
DefaultRouteOnDevice를 해야지 route table에 default로 등록가능
/etc/systemd/network/eth0.network 설정사항
https://www.freedesktop.org/software/systemd/man/systemd.network.html
/etc/systemd/network/99-default.link (현재 /dev/null 로 link됨)
- Route Table 설정확인 및 분석
$ route or $ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.1.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 $ ls /etc/network/ if-down.d if-post-down.d if-pre-up.d
- DNS Server 설정확인
/var/run/resolv.conf /etc/resolve.conf
- RTC 관련사항
PMIC의 별도의 Battery Generator 와 i.MX의 RTC기능이며, 배터리로 RTC가 유지가 되어진다.
세부사항은 timedatectl 설정에서 확인가능
https://www.digi.com/resources/documentation/digidocs/90001546/reference/bsp/cc6/r_real_time_clock.htm
https://developer.toradex.com/knowledge-base/how-to-use-the-real-time-clock-in-linux