Install FreePBX 17 on Debian 12 with Asterisk 21
Install FreePBX 17 on Debian 12 with Asterisk 21
Ref : https://sangomakb.atlassian.net/wiki/spaces/FP/pages/10682545/How+to+Install+FreePBX+17+on+Debian+12+with+Asterisk+21
โปรแกรมที่เกี่ยวข้อง
1.FreePBX17
2.Asterisk21
3.PHP 8.2
4.Maria DB (v10.11)
5.Node JS (v18.16)
6.64-bit Intel/AMD (x86_64) platform
7.Linux Debian12 6.1.112-1 (2024-09-30)
1.Prerequisite recommended OS update
root@fs:/home/tee# apt-get update
root@fs:/home/tee# apt-get upgrade
root@fs:/home/tee# apt -y install build-essential git curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev libjansson-dev libxml2-dev uuid-dev default-libmysqlclient-dev htop sngrep lame ffmpeg mpg123
root@fs:/home/tee# apt-get install -y locales
root@fs:/home/tee# sed -i ‘s/^# *\(en_US.UTF-8\)/\1/’ /etc/locale.gen
root@fs:/home/tee# locale-gen
Generating locales (this might take a while)…
en_US.UTF-8… done
Generation complete.
root@fs:/home/tee# echo “export LC_ALL=en_US.UTF-8” >> ~/.bashrc
root@fs:/home/tee# echo “export LANG=en_US.UTF-8” >> ~/.bashrc
root@fs:/home/tee# echo “export LANGUAGE=en_US.UTF-8” >> ~/.bashrc
root@fs:/home/tee# locale -a
bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory
root@fs:/home/tee# nano /etc/default/locale
LANG=C.UTF-8
LC_CTYPE=en_US.UTF-8
LC_ALL=en_US.UTF-8
root@fs:/home/tee# locale -a
root@fs:/home/tee# apt -y install git vim curl wget libnewt-dev libssl-dev libncurses5-dev subversion libsqlite3-dev build-essential libjansson-dev libxml2-dev uuid-dev expect
2.PHP 8.2 Installation
root@fs:/home/tee# apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mariadb-server mariadb-client bison flex php8.2 php8.2-curl php8.2-cli php8.2-common php8.2-mysql php8.2-gd php8.2-mbstring php8.2-intl php8.2-xml php-pear curl sox libncurses5-dev libssl-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev odbc-mariadb libical-dev libneon27-dev libsrtp2-dev libspandsp-dev sudo subversion libtool-bin python-dev-is-python3 unixodbc vim wget libjansson-dev software-properties-common nodejs npm ipset iptables fail2ban php-soap
root@fs:/home/tee# php -v
PHP 8.2.26 (cli) (built: Nov 25 2024 17:21:51) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.26, Copyright (c) Zend Technologies
with Zend OPcache v8.2.26, Copyright (c), by Zend Technologies
3.Asterisk Installation
root@fs:/home/tee# cd /usr/src
root@fs:/usr/src# wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-21-current.tar.gz
root@fs:/usr/src# tar xvf asterisk-21-current.tar.gz
root@fs:/usr/src# cd asterisk-21*/
root@fs:/usr/src/asterisk-21.6.0#
root@fs:/usr/src/asterisk-21.6.0# contrib/scripts/get_mp3_source.sh
A addons/mp3
A addons/mp3/layer3.c
A addons/mp3/interface.c
A addons/mp3/MPGLIB_TODO
A addons/mp3/mpg123.h
A addons/mp3/mpglib.h
A addons/mp3/decode_ntom.c
A addons/mp3/MPGLIB_README
A addons/mp3/common.c
A addons/mp3/huffman.h
A addons/mp3/tabinit.c
A addons/mp3/Makefile
A addons/mp3/README
A addons/mp3/decode_i386.c
A addons/mp3/dct64_i386.c
Exported revision 204.
root@fs:/usr/src/asterisk-21.6.0# contrib/scripts/install_prereq install
root@fs:/usr/src/asterisk-21.6.0# ./configure –libdir=/usr/lib64 –with-pjproject-bundled –with-jansson-bundled
root@fs:/usr/src/asterisk-21.6.0# make menuselect
root@fs:/usr/src/asterisk-21.6.0# make
root@fs:/usr/src/asterisk-21.6.0# make install
root@fs:/usr/src/asterisk-21.6.0# make samples
root@fs:/usr/src/asterisk-21.6.0# make config
root@fs:/usr/src/asterisk-21.6.0# ldconfig
Create asterisk user and give permission
root@fs:/usr/src/asterisk-21.6.0# groupadd asterisk
root@fs:/usr/src/asterisk-21.6.0# useradd -r -d /var/lib/asterisk -g asterisk asterisk
root@fs:/usr/src/asterisk-21.6.0# usermod -aG audio,dialout asterisk
root@fs:/usr/src/asterisk-21.6.0# chown -R asterisk:asterisk /etc/asterisk
root@fs:/usr/src/asterisk-21.6.0# chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk
root@fs:/usr/src/asterisk-21.6.0# chown -R asterisk:asterisk /usr/lib64/asterisk
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s|#AST_USER|AST_USER|’ /etc/default/asterisk
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s|#AST_GROUP|AST_GROUP|’ /etc/default/asterisk
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s|;runuser|runuser|’ /etc/asterisk/asterisk.conf
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s|;rungroup|rungroup|’ /etc/asterisk/asterisk.conf
root@fs:/usr/src/asterisk-21.6.0# echo “/usr/lib64” >> /etc/ld.so.conf.d/x86_64-linux-gnu.conf
root@fs:/usr/src/asterisk-21.6.0# ldconfig
4.Configure Apache web server
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s/\(^upload_max_filesize = \).*/\120M/’ /etc/php/8.2/apache2/php.ini
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s/\(^memory_limit = \).*/\1256M/’ /etc/php/8.2/apache2/php.ini
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s/^\(User\|Group\).*/\1 asterisk/’ /etc/apache2/apache2.conf
root@fs:/usr/src/asterisk-21.6.0# sed -i ‘s/AllowOverride None/AllowOverride All/’ /etc/apache2/apache2.conf
root@fs:/usr/src/asterisk-21.6.0# a2enmod rewrite
Enabling module rewrite.
To activate the new configuration, you need to run:
systemctl restart apache2
root@fs:/usr/src/asterisk-21.6.0# systemctl restart apache2
root@fs:/usr/src/asterisk-21.6.0# rm /var/www/html/index.html
5.Configure ODBC
root@fs:/usr/src/asterisk-21.6.0# cat < /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
EOF
root@fs:/usr/src/asterisk-21.6.0# cat /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL (MariaDB)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
FileUsage = 1
root@fs:/usr/src/asterisk-21.6.0# cat < /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description = MySQL connection to ‘asteriskcdrdb’ database
Driver = MySQL
Server = localhost
Database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
Option = 3
EOF
6.Install FreePBX
root@fs:/usr/src/asterisk-21.6.0# cd /usr/local/src
root@fs:/usr/local/src# wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-17.0-latest-EDGE.tgz
root@fs:/usr/local/src# tar zxvf freepbx-17.0-latest-EDGE.tgz
root@fs:/usr/local/src# cd /usr/local/src/freepbx/
root@fs:/usr/local/src/freepbx# ./start_asterisk start
STARTING ASTERISK
Asterisk Started
root@fs:/usr/local/src/freepbx# ./install -n
Generating default configurations…
Finished generating default configurations
You have successfully installed FreePBX
7.Get the rest of the modules
root@fs:/usr/local/src/freepbx# fwconsole ma installall
root@fs:/usr/local/src/freepbx# fwconsole reload
Reload Started
Reload Complete
root@fs:/usr/local/src/freepbx# fwconsole restart
Running FreePBX shutdown…
Running Asterisk pre from Core module
Stopping Call Transfer Monitoring Service
Core FastAGI Server is not running
Running Asterisk pre from Ucp module
Stopping UCP Node Server
[->————————–] 1 sec
Stopped UCP Node Server
Shutting down Asterisk Gracefully. Will forcefully kill after 30 seconds.
Press C to Cancel
Press N to shut down NOW
[============================] < 1 sec Running FreePBX startup… Starting Asterisk… [============================] 2 secs Asterisk Started Running Asterisk post from Core module Starting Call Transfer Monitoring Service Stopping Call Transfer Monitoring Service Restarting Call Transfer Monitoring Service Starting Core FastAGI Server…
[->————————–] 1 sec
Started Core FastAGI Server. PID is 95704
Running Asterisk post from Ucp module
Starting UCP Node Server…
[->————————–] < 1 sec
Started UCP Node Server. PID is 95803
8.Set up systemd (startup script)
root@fs:/usr/local/src/freepbx# cat < /etc/systemd/system/freepbx.service
[Unit]
Description=FreePBX VoIP Server
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start -q
ExecStop=/usr/sbin/fwconsole stop -q
[Install]
WantedBy=multi-user.target
EOF
root@fs:/usr/local/src/freepbx# cat /etc/systemd/system/freepbx.service
[Unit]
Description=FreePBX VoIP Server
After=mariadb.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start -q
ExecStop=/usr/sbin/fwconsole stop -q
[Install]
WantedBy=multi-user.target
root@fs:/usr/local/src/freepbx# systemctl daemon-reload
root@fs:/usr/local/src/freepbx# systemctl enable freepbx
Created symlink /etc/systemd/system/multi-user.target.wants/freepbx.service → /etc/systemd/system/freepbx.service.
9.Goto URL Web Management
Username >
Password >
Email >
System name >
[Submit]
Firewall to Our IPPBX Server
root@fs:/usr/local/src/freepbx# iptables –version
iptables v1.8.9 (nf_tables)
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p tcp –dport 8088 -j ACCEPT # HTTP
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p tcp –dport 22 -j ACCEPT # SSH
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p tcp –dport 443 -j ACCEPT # HTTPS
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p udp –dport 5060 -j ACCEPT # SIP
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p udp –dport 5061 -j ACCEPT # PJSIP
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p udp –dport 10000:20000 -j ACCEPT # RTP
root@fs:/usr/local/src/freepbx# iptables -A INPUT -p udp –dport 5038 -j ACCEPT # AMI
root@fs:/usr/local/src/freepbx# iptables -A INPUT -j DROP
root@fs:/usr/local/src/freepbx# mkdir /etc/iptables/
root@fs:/usr/local/src/freepbx# iptables-save > /etc/iptables/rules.v4
root@fs:/etc/iptables# iptables -nvL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
4 220 ACCEPT 6 — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
29 2012 ACCEPT 6 — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9696
0 0 ACCEPT 6 — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
892 531K ACCEPT 17 — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5060
892 531K ACCEPT 17 — * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5061
0 0 ACCEPT 17 — * * 0.0.0.0/0 0.0.0.0/0 udp dpts:10000:20000
0 0 ACCEPT 6 — * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5038
2 104 DROP 0 — * * 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 906 packets, 482K bytes)
pkts bytes target prot opt in out source destination
บันทึกกฎ iptables:
เพื่อให้กฎยังคงอยู่หลังรีบูตระบบ คุณต้องบันทึกกฎ:
root@fs:/etc/fail2ban# apt-get install iptables-persistent -y
root@fs:/etc/iptables# sudo netfilter-persistent save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
root@fs:/etc/iptables# sudo netfilter-persistent reload
run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
ติดตั้ง Fail2Ban เพื่อเพิ่มความปลอดภัย
Fail2Ban เป็นเครื่องมือช่วยป้องกันการโจมตี Brute Force และ DDoS ผ่านการบล็อก IP ที่ไม่ปลอดภัยอัตโนมัติ โดยเฉพาะกับการโจมตี SIP
root@fs:/etc/fail2ban# sudo nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 10m
findtime = 10m
maxretry = 5
[sshd]
enabled = true
port = 9696
logpath = /var/log/auth.log
maxretry = 3
[asterisk]
enabled = true
port = 5060,5061
protocol = udp
logpath = /var/log/asterisk/full
maxretry = 5
root@fs:/etc/iptables# systemctl status fail2ban
Update Timezone Debian
root@fs:/# dpkg-reconfigure tzdata
เลือก zone เวลาประเทศไทย Bangkok/Thailand
กรณีใช้ ssh connection ด้วย private key ต้องการที่จะอนุญาตให้ใช้ password ได้ด้วย
[admin@Teee-MKT] > ip ssh/ print
forwarding-enabled: no
always-allow-password-login: no
strong-crypto: no
allow-none-crypto: no
host-key-size: 2048
host-key-type: rsa
[admin@Teee-MKT] > ip ssh set always-allow-password-login=yes
LAB-เชื่อมต่อ Internet ด้วย Fortigate Firewall และ Cisco Switch แยก Vlan
1. Fortigate
Port WAN1 —DHCP Gateway 192.168.1.1
MGMT — 172.16.1.1/24
2. Static Route > 0.0.0.0 gateway 192.168.1.1
3. Interface 1
VLAN 10 192.168.10.1/24 DHCP 192.168.10.10-200
VLAN 20 192.168.20.1/24 DHCP 192.168.20.10-200
VLAN 30 192.168.30.1/24 DHCP 192.168.30.10-200
VLAN 100 192.168.100.1/24 DHCP 192.168.100.10-200
4. กำหนดค่าที่ Firewall
Allow Physical Port
Allow VLAN(10,20,30,100) ออกอินเทอร์เน็ต
หน้าไฟล์วอล์ทั้งหมดที่สร้าง
จากนั้นไปกำหนดค่าที่ Cisco Switch
Switch(config)#no logging console
Switch(config)#hostname C3850
C3850(config)#vlan 10
C3850(config-vlan)#exit
C3850(config)#vlan 20
C3850(config-vlan)#exit
C3850(config)#vlan 30
C3850(config-vlan)#exit
C3850(config)#vlan 100
C3850(config-vlan)#exit
C3850(config)#interface vlan 10
C3850(config-if)#ip address 192.168.10.254 255.255.255.0
C3850(config-if)#no shut
C3850(config-if)#exit
C3850(config)#interface vlan 20
C3850(config-if)#ip address 192.168.20.254 255.255.255.0
C3850(config-if)#no shut
C3850(config-if)#exit
C3850(config)#interface vlan 30
C3850(config-if)#ip address 192.168.30.254 255.255.255.0
C3850(config-if)#no shut
C3850(config-if)#exit
C3850(config)#interface vlan 100
C3850(config-if)#ip address 192.168.100.254 255.255.255.0
C3850(config-if)#no shut
C3850(config-if)#exit
C3850(config)#interface range gigabitEthernet 1/0/1-5
C3850(config-if-range)#switchport mode access
C3850(config-if-range)#switchport access vlan 10
C3850(config-if-range)#no shut
C3850(config-if-range)#exit
C3850(config)#interface range gigabitEthernet 1/0/6-10
C3850(config-if-range)#switchport mode access
C3850(config-if-range)#switchport access vlan 20
C3850(config-if-range)#no shut
C3850(config-if-range)#exit
C3850(config)#interface range gigabitEthernet 1/0/11-15
C3850(config-if-range)#switchport mode access
C3850(config-if-range)#switchport access vlan 30
C3850(config-if-range)#no shut
C3850(config-if-range)#exit
C3850(config)#interface range gigabitEthernet 1/0/16-20
C3850(config-if-range)#switchport mode access
C3850(config-if-range)#switchport access vlan 100
C3850(config-if-range)#no shut
C3850(config-if-range)#exit
C3850(config)#interface gigabitEthernet 1/0/23
C3850(config-if)#switchport mode trunk
C3850(config-if)#switchport trunk allowed vlan 10,20,30,100
C3850(config-if)#no shut
C3850(config-if)#exit
C3850(config)#ip routing
C3850(config)#ip default-gateway 192.168.100.1
C3850(config)#ip route 0.0.0.0 0.0.0.0 192.168.100.1
C3850(config)#ip name-server 8.8.8.8 1.1.1.1
C3850(config)#ntp server time.navy.mi.th
C3850(config-if)#do wr
LAB เชื่อมต่อ Internet ด้วย Cisco Router และ Switch – แบบที่ 2
(ISP 192.168.1.1)——dhcp—— 192.168.1.x(C1800)===vlan(10,20,30)==(C-SW3850)===vlan(10,20,30)
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#hostname cisco1800
cisco1800(config)#do show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 unassigned YES unset administratively down down
FastEthernet0/1 unassigned YES unset administratively down down
Serial0/0/0 unassigned YES unset administratively down down
Serial0/0/1 unassigned YES unset administratively down down
cisco1800(config)#interface fastEthernet 0/0
cisco1800(config-if)#ip address dhcp
cisco1800(config-if)#no shut
cisco1800(config-if)#exit
cisco1800(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
cisco1800(config)#do show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route
Gateway of last resort is 192.168.1.1 to network 0.0.0.0
C 192.168.1.0/24 is directly connected, FastEthernet0/0
S* 0.0.0.0/0 [1/0] via 192.168.1.1
cisco1800(config-if)#do show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 192.168.1.181 YES DHCP up up
FastEthernet0/1 unassigned YES unset administratively down down
Serial0/0/0 unassigned YES unset administratively down down
Serial0/0/1 unassigned YES unset administratively down down
cisco1800(config)#interface fastEthernet 0/1
cisco1800(config-if)#no shut
cisco1800(config-subif)#exit
cisco1800(config)#interface fastEthernet 0/1.10
cisco1800(config-subif)#encapsulation dot1Q 10
cisco1800(config-subif)#ip address 10.10.10.1 255.255.255.0
cisco1800(config-subif)#no shut
cisco1800(config-subif)#exit
cisco1800(config)#interface fastEthernet 0/1.20
cisco1800(config-subif)#encapsulation dot1Q 20
cisco1800(config-subif)#ip address 10.10.20.1 255.255.255.0
cisco1800(config-subif)#no shut
cisco1800(config-subif)#exit
cisco1800(config)#interface fastEthernet 0/1.30
cisco1800(config-subif)#encapsulation dot1Q 30
cisco1800(config-subif)#ip address 10.10.30.1 255.255.255.0
cisco1800(config-subif)#no shut
cisco1800(config-subif)#exit
cisco1800(config)#do show ip interface brief
Interface IP-Address OK? Method Status Protocol
FastEthernet0/0 192.168.1.181 YES DHCP up up
FastEthernet0/1 unassigned YES unset administratively down down
FastEthernet0/1.10 10.10.10.1 YES manual administratively down down
FastEthernet0/1.20 10.10.20.1 YES manual administratively down down
FastEthernet0/1.30 10.10.30.1 YES manual administratively down down
Serial0/0/0 unassigned YES unset administratively down down
Serial0/0/1 unassigned YES unset administratively down down
cisco1800(config)#ip dhcp pool 10
cisco1800(dhcp-config)#network 10.10.10.0 /24
cisco1800(dhcp-config)#default-router 10.10.10.1
cisco1800(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
cisco1800(dhcp-config)#exit
cisco1800(config)#ip dhcp pool 20
cisco1800(dhcp-config)#network 10.10.20.0 /24
cisco1800(dhcp-config)#default-router 10.10.20.1
cisco1800(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
cisco1800(dhcp-config)#exit
cisco1800(config)#ip dhcp pool 30
cisco1800(dhcp-config)#network 10.10.30.0 /24
cisco1800(dhcp-config)#default-router 10.10.30.1
cisco1800(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
cisco1800(dhcp-config)#exit
cisco1800(config)#interface fastEthernet 0/0
cisco1800(config-if)#ip nat outside
cisco1800(config-if)#exit
cisco1800(config)#interface fastEthernet 0/1.10
cisco1800(config-subif)#ip nat inside
cisco1800(config-subif)#exit
cisco1800(config)#interface fastEthernet 0/1.20
cisco1800(config-subif)#ip nat inside
cisco1800(config-subif)#exit
cisco1800(config)#interface fastEthernet 0/1.30
cisco1800(config-subif)#ip nat inside
cisco1800(config-subif)#exit
cisco1800(config)#ip access-list standard Local
cisco1800(config-std-nacl)#permit 10.10.10.0 0.0.0.255
cisco1800(config-std-nacl)#permit 10.10.20.0 0.0.0.255
cisco1800(config-std-nacl)#permit 10.10.30.0 0.0.0.255
cisco1800(config-std-nacl)#exit
cisco1800(config)# ip nat inside source list Local interface FastEthernet 0/0 overload
cisco1800(config)#exit
cisco1800(config)#wr
SWITCH Cisco Catalyst 3850 24 port
Switch#conf t
Switch(config)#no logging console
Switch(config)#interface GigabitEthernet 1/0/24
Switch(config-if)#switchport mode trunk
Switch(config-if)#no shutdown
Switch(config-if)#exit
Switch(config)#vlan 10
Switch(config-vlan)#name IT
Switch(config-vlan)#no shut
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#name WIFI
Switch(config-vlan)#no shut
Switch(config-vlan)#exit
Switch(config)#vlan 30
Switch(config-vlan)#name SUPPORT
Switch(config-vlan)#no shut
Switch(config-vlan)#exit
Switch(config)#interface range GigabitEthernet 1/0/1-5
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 10
Switch(config-if-range)#exit
Switch(config)#interface range GigabitEthernet 1/0/6-10
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 20
Switch(config-if-range)#exit
Switch(config)#interface range GigabitEthernet 1/0/11-15
Switch(config-if-range)#switchport mode access
Switch(config-if-range)#switchport access vlan 30
Switch(config-if-range)#exit
Switch#show vlan
VLAN Name Status Ports
—- ——————————– ——— ——————————-
1 default active Gi1/0/16, Gi1/0/17, Gi1/0/18
Gi1/0/19, Gi1/0/20, Gi1/0/21
Gi1/0/22, Gi1/0/23, Gi1/0/24
Gi1/1/1, Gi1/1/2, Gi1/1/3
Gi1/1/4
10 IT active Gi1/0/1, Gi1/0/2, Gi1/0/3
Gi1/0/4, Gi1/0/5
20 WIFI active Gi1/0/6, Gi1/0/7, Gi1/0/8
Gi1/0/9, Gi1/0/10
30 SUPPORT active Gi1/0/11, Gi1/0/12, Gi1/0/13
Gi1/0/14, Gi1/0/15
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
Switch#show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gi1/0/24 on 802.1q trunking 1
Port Vlans allowed on trunk
Gi1/0/24 1-4094
Port Vlans allowed and active in management domain
Gi1/0/24 1,10,20,30
Port Vlans in spanning tree forwarding state and not pruned
Gi1/0/24 1,10,20,30
LAB เชื่อมต่อ Internet ด้วย Cisco Router และ Switch – แบบที่ 1
(ISP) 192.168.1.1———>f0/0 192.168.1.200 (C1800) f0/1 10.10.10.254 ——— Gi1/0/24 10.10.10.1(SW-Catalyst3850)———(Vlan 192.168.(10,20,30) )
R1(config)#hostname Router-Cisco1800
Router-Cisco1800(config)#interface fastEthernet 0/0
Router-Cisco1800(config-if)#ip address 192.168.1.200 255.255.255.0
Router-Cisco1800(config-if)#no shut
Router-Cisco1800(config-if)#ip nat outside
Router-Cisco1800(config-if)#exit
(If you want dhcp to f0/0)
Router-Cisco1800(config)#interface fastEthernet 0/0
Router-Cisco1800(config-if)#ip address dhcp
Router-Cisco1800(config-if)#no shut
Router-Cisco1800(config)#interface fastEthernet 0/1
Router-Cisco1800(config-if)#ip address 10.10.10.254 255.255.255.0
Router-Cisco1800(config-if)#no shut
Router-Cisco1800(config-if)#ip nat inside
Router-Cisco1800(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1
Router-Cisco1800(config)#ip name-server 8.8.8.8 1.1.1.1
Clear Old Switch Config
#erase startup-config
#delete flash:vlan.dat
#reload
no save
SW-Catalyst3850(config)#hostname SW-Catalyst3850
SW-Catalyst3850(config)#no logging console
SW-Catalyst3850(config)#interface gigabitEthernet 1/0/24
SW-Catalyst3850(config-if)#no switchport
SW-Catalyst3850(config-if)#ip address 10.10.10.1 255.255.255.0
SW-Catalyst3850(config-if)#no shut
SW-Catalyst3850(config-if)#exit
SW-Catalyst3850(config)#ip route 0.0.0.0 0.0.0.0 10.10.10.254
SW-Catalyst3850(config)#do ping 10.10.10.254
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.10.10.254, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/2 ms
SW-Catalyst3850(config)#vlan 10
SW-Catalyst3850(config-vlan)#name IT
SW-Catalyst3850(config-vlan)#exit
SW-Catalyst3850(config)#vlan 20
SW-Catalyst3850(config-vlan)#name WIFI
SW-Catalyst3850(config-vlan)#exit
SW-Catalyst3850(config)#vlan 30
SW-Catalyst3850(config-vlan)#name SUPPORT
SW-Catalyst3850(config-vlan)#exit
SW-Catalyst3850(config)#do show vlan
VLAN Name Status Ports
—- ——————————– ——— ——————————-
1 default active Gi1/0/1, Gi1/0/2, Gi1/0/3
Gi1/0/4, Gi1/0/5, Gi1/0/6
Gi1/0/7, Gi1/0/8, Gi1/0/9
Gi1/0/10, Gi1/0/11, Gi1/0/12
Gi1/0/13, Gi1/0/14, Gi1/0/15
Gi1/0/16, Gi1/0/17, Gi1/0/18
Gi1/0/19, Gi1/0/20, Gi1/0/21
Gi1/0/22, Gi1/0/23, Gi1/1/1
Gi1/1/2, Gi1/1/3, Gi1/1/4
10 IT active
20 WIFI active
30 SUPPORT active
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
SW-Catalyst3850(config)#interface range gigabitEthernet 1/0/1-5
SW-Catalyst3850(config-if-range)#switchport mode access
SW-Catalyst3850(config-if-range)#switchport access vlan 10
SW-Catalyst3850(config-if-range)#exit
SW-Catalyst3850(config)#interface range GigabitEthernet 1/0/6-10
SW-Catalyst3850(config-if-range)#switchport mode access
SW-Catalyst3850(config-if-range)#switchport access vlan 20
SW-Catalyst3850(config-if-range)#exit
SW-Catalyst3850(config)#interface range GigabitEthernet 1/0/11-15
SW-Catalyst3850(config-if-range)#switchport mode access
SW-Catalyst3850(config-if-range)#switchport access vlan 30
SW-Catalyst3850(config-if-range)#exit
SW-Catalyst3850#show vlan
VLAN Name Status Ports
—- ——————————– ——— ——————————-
1 default active Gi1/0/16, Gi1/0/17, Gi1/0/18
Gi1/0/19, Gi1/0/20, Gi1/0/21
Gi1/0/22, Gi1/0/23, Gi1/1/1
Gi1/1/2, Gi1/1/3, Gi1/1/4
10 IT active Gi1/0/1, Gi1/0/2, Gi1/0/3
Gi1/0/4, Gi1/0/5
20 WIFI active Gi1/0/6, Gi1/0/7, Gi1/0/8
Gi1/0/9, Gi1/0/10
30 SUPPORT active Gi1/0/11, Gi1/0/12, Gi1/0/13
Gi1/0/14, Gi1/0/15
1002 fddi-default act/unsup
1003 token-ring-default act/unsup
1004 fddinet-default act/unsup
1005 trnet-default act/unsup
SW-Catalyst3850(config)#interface vlan 10
SW-Catalyst3850(config-if)#ip address 192.168.10.1 255.255.255.0
SW-Catalyst3850(config-if)#no shut
SW-Catalyst3850(config-if)#exit
SW-Catalyst3850(config)#interface vlan 20
SW-Catalyst3850(config-if)#ip address 192.168.20.1 255.255.255.0
SW-Catalyst3850(config-if)#no shut
SW-Catalyst3850(config-if)#exit
SW-Catalyst3850(config)#interface vlan 30
SW-Catalyst3850(config-if)#ip address 192.168.30.1 255.255.255.0
SW-Catalyst3850(config-if)#no shut
SW-Catalyst3850(config-if)#exit
SW-Catalyst3850(config)#do show ip interface brief
Any interface listed with OK? value “NO” does not have a valid configuration
Interface IP-Address OK? Method Status Protocol
Vlan1 unassigned YES unset up down
Vlan10 192.168.10.1 YES manual up down
Vlan20 192.168.20.1 YES manual up down
Vlan30 192.168.30.1 YES manual up down
GigabitEthernet0/0 unassigned NO unset down down
GigabitEthernet1/0/1 unassigned YES unset down down
GigabitEthernet1/0/2 unassigned YES unset down down
GigabitEthernet1/0/3 unassigned YES unset down down
GigabitEthernet1/0/4 unassigned YES unset down down
GigabitEthernet1/0/5 unassigned YES unset down down
GigabitEthernet1/0/6 unassigned YES unset down down
GigabitEthernet1/0/7 unassigned YES unset down down
GigabitEthernet1/0/8 unassigned YES unset down down
GigabitEthernet1/0/9 unassigned YES unset down down
GigabitEthernet1/0/10 unassigned YES unset down down
GigabitEthernet1/0/11 unassigned YES unset down down
GigabitEthernet1/0/12 unassigned YES unset down down
GigabitEthernet1/0/13 unassigned YES unset down down
GigabitEthernet1/0/14 unassigned YES unset down down
GigabitEthernet1/0/15 unassigned YES unset down down
GigabitEthernet1/0/16 unassigned YES unset down down
GigabitEthernet1/0/17 unassigned YES unset down down
GigabitEthernet1/0/18 unassigned YES unset down down
GigabitEthernet1/0/19 unassigned YES unset down down
GigabitEthernet1/0/20 unassigned YES unset down down
GigabitEthernet1/0/21 unassigned YES unset down down
GigabitEthernet1/0/22 unassigned YES unset down down
GigabitEthernet1/0/23 unassigned YES unset down down
GigabitEthernet1/0/24 10.10.10.1 YES manual up up
GigabitEthernet1/1/1 unassigned YES unset down down
GigabitEthernet1/1/2 unassigned YES unset down down
GigabitEthernet1/1/3 unassigned YES unset down down
GigabitEthernet1/1/4 unassigned YES unset down down
Te1/1/1 unassigned YES unset down down
Te1/1/2 unassigned YES unset down down
Te1/1/3 unassigned YES unset down down
Te1/1/4 unassigned YES unset down down
SW-Catalyst3850(config)#ip routing
SW-Catalyst3850(config)#ip dhcp pool vlan10-IT
SW-Catalyst3850(dhcp-config)#network 192.168.10.0 255.255.255.0
SW-Catalyst3850(dhcp-config)#default-router 192.168.10.1
SW-Catalyst3850(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
SW-Catalyst3850(dhcp-config)#exit
SW-Catalyst3850(config)#ip dhcp pool vlan20-WIFI
SW-Catalyst3850(dhcp-config)#network 192.168.20.0 255.255.255.0
SW-Catalyst3850(dhcp-config)#default-router 192.168.20.1
SW-Catalyst3850(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
SW-Catalyst3850(dhcp-config)#exit
SW-Catalyst3850(config)#ip dhcp pool vlan30-SUPPORT
SW-Catalyst3850(dhcp-config)#network 192.168.30.0 255.255.255.0
SW-Catalyst3850(dhcp-config)#default-router 192.168.30.1
SW-Catalyst3850(dhcp-config)#dns-server 8.8.8.8 1.1.1.1
SW-Catalyst3850(dhcp-config)#exit
Router-Cisco1800(config)#ip route 192.168.10.0 255.255.255.0 10.10.10.1
Router-Cisco1800(config)#ip route 192.168.20.0 255.255.255.0 10.10.10.1
Router-Cisco1800(config)#ip route 192.168.30.0 255.255.255.0 10.10.10.1
Router-Cisco1800#show ip route
Codes: C – connected, S – static, R – RIP, M – mobile, B – BGP
D – EIGRP, EX – EIGRP external, O – OSPF, IA – OSPF inter area
N1 – OSPF NSSA external type 1, N2 – OSPF NSSA external type 2
E1 – OSPF external type 1, E2 – OSPF external type 2
i – IS-IS, su – IS-IS summary, L1 – IS-IS level-1, L2 – IS-IS level-2
ia – IS-IS inter area, * – candidate default, U – per-user static route
o – ODR, P – periodic downloaded static route
Gateway of last resort is 192.168.1.1 to network 0.0.0.0
S 192.168.30.0/24 [1/0] via 10.10.10.1
S 192.168.10.0/24 [1/0] via 10.10.10.1
S 192.168.20.0/24 [1/0] via 10.10.10.1
10.0.0.0/24 is subnetted, 1 subnets
C 10.10.10.0 is directly connected, FastEthernet0/1
C 192.168.1.0/24 is directly connected, FastEthernet0/0
S* 0.0.0.0/0 [1/0] via 192.168.1.1
Router-Cisco1800(config)#ip access-list standard 1
Router-Cisco1800(config-std-nacl)#permit 10.10.10.0 0.0.0.255
Router-Cisco1800(config-std-nacl)#permit 192.168.10.0 0.0.0.255
Router-Cisco1800(config-std-nacl)#permit 192.168.20.0 0.0.0.255
Router-Cisco1800(config-std-nacl)#permit 192.168.30.0 0.0.0.255
Router-Cisco1800(config)#ip nat inside source list 1 interface fastEthernet 0/0 overload
Router-Cisco1800#wr
ตั้งค่า Static IP ให้กับ Linux Ubuntu
#cd /etc/netplan# ls -l
#nano 50-cloud-init.yaml
network:
version: 2
ethernets:
ens160:
dhcp4: true
addresses:
– 192.168.100.22/24 # Replace with your desired IP and subnet
routes:
– to: default
via: 192.168.100.1 # Replace with your gateway IP
nameservers:
addresses:
– 8.8.8.8 # Google DNS
– 8.8.4.4 # Google DNS
# Restart Interface Card
#netplan apply
หรือให้ใช้งาน DHCP
network:
version: 2
ethernets:
ens160: # Replace with your Interface name
dhcp4: true
#netplan apply
การแก้ไขในกรณีที่ Switch ไม่สามารถ Boot Rom และเข้าใช้งาน Switch ไม่ได้
Cisco Catalyst 3850 ไม่สามารถบูตเข้าสู่ระบบปฏิบัติการได้ เนื่องจากตัวแปร BOOT Environment Variable ยังไม่ได้ตั้งค่าให้ชี้ไปที่ไฟล์ Image ที่สามารถบูตได้ ซึ่งเป็นสาเหตุให้ switch ไม่สามารถบูตเข้าสู่ Mode การทำงานปกติ และ Switch เข้าสู้โหมด ROMmon อัตโนมัติเพื่อทำการแก้ไขโดยจะแสดง Prompt
switch:
และเมื่อ List ดูรายการด้วยคำสั่ง dir จะพบว่า flash อยู่ในสถานะ ReadOnly ไม่สามารถ copy (firmware).bin ไปวางและให้ Boot ได้
List of filesystems currently registered:
xmodem[0]: (read-only)
null[1]: (read-write)
bs[3]: (read-only)
usbflash0[10]: (read-write)
flash[19]: (read-only)
tftp[20]: (read-write)
ftp[21]: (read-only)
http[22]: (read-only)
วิธีการแก้ไขคือ เราจะ Boot ROM จาก usb แทน โดยให้ copy ไฟล์ firmware ที่นามสกุล *.bin ไปวางใน flash และเสียบไปที่ช่อง usb ของ Switch และจะพบอุปกรณ์ชื่อ usbflash0[10]: (read-write) ให้ลอง dir usbflash0: ดูว่ามี firmware ที่เราก๊อบไปวางไว้ในนั้นหรือเปล่า
จากนั้นในโหมด ROMmon ให้ใช้คำสั่ง boot
เพื่อบูตจากไฟล์ IOS ที่อยู่ใน USB โดยระบุเส้นทางไปยังไฟล์ .bin
ดังนี้:
#boot usbflash0:cat3k_caa-universalk9.16.12.09.SPA.bin
Switch จะพยายามบูตจากไฟล์ .bin
ใน USB ที่คุณระบุ ซึ่งจะช่วยให้คุณเข้าสู่ระบบปฏิบัติการชั่วคราวเพื่อทำการฟอร์แมต flash:
หรือคัดลอก IOS ลงใน flash:
ได้
เมื่อ Boot เข้าเครื่องได้แล้วให้ทำการ format flash: (ข้อมูลอื่นๆหายหมด) หรือ Copy firmware ลงใน flash แล้วสั่งให้ Boot จาก Firmware ตัวใหม่ที่ก๊อบเข้าไป
Cisco Switch ควบคุมการจ่ายไฟ POE (Power over Ethernet) ในแต่ละพอร์ต
คุณสามารถใช้คำสั่งบน Cisco Switch เพื่อควบคุมการจ่ายไฟ POE (Power over Ethernet) ในแต่ละพอร์ตตามที่ต้องการ โดยการตั้งค่าเปิดหรือปิด POE ตามพอร์ตที่ต้องการ ดังนี้:
1.เข้าสู่โหมด Configuration:
#enable
#configure terminal
2.เลือกพอร์ตที่ต้องการตั้งค่า:
ตัวอย่างเช่น หากต้องการตั้งค่า POE บนพอร์ต interface GigabitEthernet 0/1
#interface GigabitEthernet0/1
3.เปิดหรือปิด POE ตามที่ต้องการ:
เปิด POE:
#power inline auto
ปิด POE:
#power inline never
4.ออกจากโหมด Configuration และบันทึกการตั้งค่า:
เมื่อทำการตั้งค่าทั้งหมดเสร็จแล้ว คุณสามารถบันทึกการตั้งค่าโดยการพิมพ์คำสั่ง:
#end
#write memory
ตัวอย่างการตั้งค่า
หากต้องการเปิด POE บนพอร์ต GigabitEthernet0/2
และปิด POE บนพอร์ต GigabitEthernet0/3
คุณสามารถใช้คำสั่งตามนี้:
#enable
#configure terminal
#interface GigabitEthernet0/2
#power inline auto
#exit
#interface GigabitEthernet0/3
#power inline never
#end
#write memory
คำสั่งเพิ่มเติม
เช็คสถานะการจ่ายไฟ POE บนพอร์ตทั้งหมด:
#show power inline
คำสั่งเหล่านี้จะช่วยให้คุณควบคุมการจ่ายไฟ POE บน Cisco Switch ได้ตามต้องการ:
ถ้าต้องการกำหนดขนาดโหลดของ POE ที่ปล่อยในแต่ละพอร์ตบน Cisco Switch สามารถทำได้โดยการกำหนดปริมาณกำลังไฟ (power allocation) ในแต่ละพอร์ต ซึ่งจะช่วยควบคุมกำลังไฟสูงสุดที่แต่ละพอร์ตสามารถจ่ายได้ การตั้งค่าจะเป็นการกำหนดลิมิตของวัตต์ที่ปล่อยให้กับอุปกรณ์ POE ที่เชื่อมต่ออยู่ ตัวอย่างการตั้งค่า:
1.เข้าสู่โหมด Configuration:
#enable
#configure terminal
2.เลือกพอร์ตที่ต้องการตั้งค่า:
ตัวอย่างเช่น หากต้องการตั้งค่า POE บนพอร์ต interface GigabitEthernet 0/1
#interface GigabitEthernet0/1
3.กำหนดขนาดกำลังไฟที่ต้องการ (ในหน่วยวัตต์)
สามารถกำหนดได้เป็นจำนวนวัตต์ที่อุปกรณ์ต้องการ โดยใช้คำสั่ง:
#power inline static max <wattage>
ตัวอย่างเช่น ถ้าต้องการให้พอร์ตจ่ายไฟสูงสุด 15.4 วัตต์:
#power inline static max 15.4
4.ออกจากโหมด Configuration และบันทึกการตั้งค่า:
เมื่อทำการตั้งค่าทั้งหมดเสร็จแล้ว คุณสามารถบันทึกการตั้งค่าโดยการพิมพ์คำสั่ง:
#end
#write memory
ตัวอย่างการตั้งค่า
หากต้องการกำหนดให้พอร์ต GigabitEthernet0/1
จ่ายกำลังไฟสูงสุดที่ 15.4 วัตต์ และ GigabitEthernet0/2
จ่ายที่ 7 วัตต์ สามารถตั้งค่าได้ดังนี้:
ในการรัน TFTP server บนเครื่อง Mac
คุณสามารถทำตามขั้นตอนด้านล่างนี้:
1. เปิด Terminal: ไปที่ Applications > Terminal
2. ตรวจสอบสถานะ: คุณสามารถตรวจสอบว่า TFTP daemon กำลังทำงานอยู่หรือไม่ โดยใช้คำสั่ง:
% sudo launchctl list | grep tftp
หรือใช้คำสั่ง
%sudo lsof -i :69
หรือคำสั่ง
%netstat -atp UDP | grep tftp
หรือลอง ทดสอบเชื่อม localhost
%tftp localhost
ถ้าเข้าสู่ prompt ของ tftp
ได้ (เช่น tftp>
) หมายความว่า TFTP server ของคุณทำงานอยู่
3.เช็คว่า tftpd มีอยู่ในเครื่อง
% cat /System/Library/LaunchDaemons/tftp.plist
4.เพื่อความง่ายในการหา Folder จะทำการเปลี่ยนแปลงนิดหน่อย
% cd /private
% sudo rm -rf tftpboot
% mkdir /Users/(YourUser)/tftpboot
% sudo ln -s /Users/(YourUser)/tftpboot tftpboot
ให้ทำการ Start tftp ด้วยคำสั่ง
% sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
ถ้าต้องการ Stop process ให้ใช้คำสั่ง
% sudo launchctl unload /System/Library/LaunchDaemons/tftp.plist