วิธีแก้ไข PSU12-Sritrang Server ใช้งาน 2 subnets แบบ manual

จาก Wiki Opensource

ปรับปรุงล่าสุดเมื่อวันที่ 28-04-60
ดูแลโดย วิบูลย์

วิธีแก้ไข PSU12-Sritrang Server ใช้งาน 2 subnets แบบ manual

เป็นคำแนะนำสำหรับผู้ที่ต้องการใช้ server เดียว (อาจเป็น VM server จะสะดวก) สำหรับบริการ network สองวง (2 subnets)
เป็นวิธีการที่ต้องแก้ไขแบบค่อย ๆ แก้ไข และ เพิ่มไฟล์ที่จำเป็น

ที่ PSU12-Sritrang server เดิมมีเพียง eth0 เพิ่ม LAN Card อีก 1 การ์ด จะได้
เป็น eth1 สมมติให้มี IP address 10.0.200.251


การแก้ไขสำหรับเรื่อง backup และ cloning PC

แก้ไข 1
vi /etc/network/interfaces
เพิ่มบรรทัด

auto eth1
iface eth1 inet static
address 10.0.200.251
netmask 255.255.255.0

และทำการ reboot เครื่อง 1 ครั้ง

แก้ไข 2
vi /etc/default/isc-dhcp-server
เพิ่ม "eth0 eth1"

แก้ไข 3
vi /etc/dhcpd/dhcpd.conf
เพิ่ม subnet ชุดที่สอง (สมมติชุดแรกคือ 10.0.100.0)

subnet 10.0.200.0 netmask 255.255.255.0 {
...
...
}

และลงทะเบียน MAC แบบ manual
และรันคำสั่ง service isc-dhcp-server restart

แก้ไข 4
cd /var/lib/tftpboot/zone2/
เปลี่ยนใช้ ip address 10.0.200.251 โดยเข้าไปแก้ไขไฟล์ menu-zone2-0.mnu ด้วย editor
หรือสั่งรันแบบนี้
sed -i.bak 's/ipของeth0/10.0.200.251/g' menu-zone2-0.mnu
แก้ไข คำว่า autoruns=1 เป็น autoruns=2
sed -i.bak 's/autoruns=1/autoruns=2/g' menu-zone2-0.mnu

เปลี่ยนใช้ ip address 10.0.200.251 โดยเข้าไปแก้ไขไฟล์ menu-zone2-10.mnu ด้วย editor
หรือสั่งรันแบบนี้
sed -i.bak 's/ipของeth0/10.0.200.251/g' menu-zone2-10.mnu
แก้ไข คำว่า autoruns=10 เป็น autoruns=20
sed -i.bak 's/autoruns=10/autoruns=20/g' menu-zone2-10.mnu

แก้ไข 5
backup file เผื่อทำผิดพลาด
cp -rp /var/www/sysresccd /var/www/sysresccd2

cd /var/www/sysresccd/
cp autorun1 autorun2
เปลี่ยนใช้ ip address ใหม่ โดยเข้าไปแก้ไขไฟล์ autorun2 ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/ipของeth0/10.0.200.251/g' autorun2
sed -i 's/welcome.sh/welcome2.sh/g' autorun2
sed -i 's/backup.sh/backup2.sh/g' autorun2
sed -i 's/menubackuprestore.sh/menubackuprestrore2.sh/g' autorun2

แก้ไข 6
cd /var/www/cloning/
cp welcome.sh welcome2.sh
cp backup.sh backup2.sh
cp menubackuprestore.sh menubackuprestore2.sh

เปลี่ยนใช้ MYSERVER="10.0.200.251" โดยเข้าไปแก้ไขไฟล์ welcome2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/ipของeth0/10.0.200.251/g' welcome2.sh

เปลี่ยนใช้ MYSERVER="10.0.200.251" โดยเข้าไปแก้ไขไฟล์ backup2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/ipของeth0/10.0.200.251/g' backup2.sh

เปลี่ยนเมนู โดยเข้าไปแก้ไขไฟล์ menubackuprestrore2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/welcome.sh/welcome2.sh/g' menubackuprestrore2.sh
sed -i 's/backup.sh/backup2.sh/g' menubackuprestrore2.sh

ทดสอบ backup ต้นฉบับ

แก้ไข 7
cd /home/papa
cp -p preparetocreateautorun.sh preparetocreateautorun20.sh
แก้ไข คำว่า autoruns=10 เป็น autoruns=20 โดยเข้าไปแก้ไขไฟล์ preparetocreateautorun20.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/autorun10/autorun20/g' preparetocreateautorun20.sh

และเปลี่ยนไปใช้ตัวแปร INTF=eth1 โดยเข้าไปแก้ไขไฟล์ preparetocreateautorun20.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/eth0/eth1/g' preparetocreateautorun20.sh

แก้ไข 8
cp -p multicast.sh multicast2.sh
เปลี่ยนไปใช้ตัวแปร INTF=eth1 โดยเข้าไปแก้ไขไฟล์ multicast2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/eth0/eth1/g' multicast2.sh

แก้ไข 9
แก้ไขไฟล์ mystart.sh ด้วย editor ดังนี้
vi mystart.sh
เพิ่ม menu

"INITIALIZE2-multicast-zone${AREA}" "Initialize value for cloning subnet2 zone${AREA}"
"MULTICAST2-menu-zone${AREA}" "multicast sender subnet2 zone${AREA}"

และ เพิ่ม choice

INITIALIZE2-multicast-zone${AREA})
  bash preparetocreateautorun20.sh zone${AREA}
MULTICAST2-menu-zone${AREA})
  bash multicast2.sh zone${AREA}


ทดสอบ clone เครื่องใหม่


การแก้ไขสำหรับ Wake on LAN

ให้เพิ่ม option -i "IP broadcast address ของ subnet" ในคำสั่ง wakeonlan
เช่น wakeonlan -i 10.0.200.255 $mac1

แก้ไข 1
cd /root/scripts
cp -p wakeonlanspecial.sh wakeonlanspecial2.sh
เข้าไปแก้ไขไฟล์ wakeonlanspecial2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/wakeonlan $mac1/wakeonlan -i 10.0.200.255 $mac1/g' wakeonlanspecial2.sh

แก้ไข 2
cp -p wakeonlanspecialformulticast.sh wakeonlanspecialformulticast2.sh
เข้าไปแก้ไขไฟล์ wakeonlanspecialformulticast2.sh ด้วย editor
หรือสั่งรันแบบนี้
sed -i 's/wakeonlan $mac1/wakeonlan -i 10.0.200.255 $mac1/g' wakeonlanspecialformulticast2.sh

แก้ไข 3
แก้ไขไฟล์ othermenu.sh ด้วย editor ดังนี้
vi othermenu.sh
เพิ่ม menu จากเดิม

echo '7 "Wake-on-LAN-normal wakeonlanspecial.sh"' >> ${TEMP3}
echo '8 "Wake-on-LAN-for-multicast wakeonlanspecialformulticast.sh"' >> ${TEMP3}

เป็น

echo '7 "Wake-on-LAN-normal wakeonlanspecial.sh"' >> ${TEMP3}
echo '77 "Wake-on-LAN-normal2 wakeonlanspecial2.sh"' >> ${TEMP3}
echo '8 "Wake-on-LAN-for-multicast wakeonlanspecialformulticast.sh"' >> ${TEMP3}
echo '88 "Wake-on-LAN-for-multicast2 wakeonlanspecialformulticast2.sh"' >> ${TEMP3}

ทดสอบ wakeonlan

การเพิ่ม iproute2 สำหรับ server เมื่อเราเพิ่ม LAN Card อีก 1 การ์ด จะช่วยให้เครื่อง client Windows ที่อยู่ใน subnet ที่ 2 นั้นสามารถ ping หรือเรียกใช้ service ไปที่ IP ของ eth0 ของ server ได้ ดังนี้

ตรวจสอบ network interfaces ได้ผลลัพธ์ดังนี้

root@ubuntu:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:4d:60:1e:fb:ab
          inet addr:10.0.100.20  Bcast:10.0.100.255  Mask:255.255.255.0

eth1      Link encap:Ethernet  HWaddr 00:04:a5:fd:a4:9c
          inet addr:10.0.200.251  Bcast:10.0.200.255  Mask:255.255.255.0

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0


เพิ่ม 2 บรรทัดนี้ต่อท้ายในไฟล์ /etc/iproute2/rt_tables (ผมตั้งชื่อ routing table 1 ว่า rt1 และ routing table 2 ว่า rt2)

1       rt1
2       rt2


ผลลัพธ์ได้ดังนี้

root@ubuntu:~# cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
1       rt1
2       rt2


เพิ่ม 4 บรรทัดนี้สำหรับ eth0

post-up ip route add 10.0.100.0/24 dev eth0 src 10.0.100.20 table rt1
post-up ip route add default via 10.0.100.1 dev eth0 table rt1
post-up ip rule add from 10.0.100.20/32 table rt1
post-up ip rule add to 10.0.100.20/32 table rt1


และเพิ่ม 4 บรรทัดนี้สำหรับ eth1

post-up ip route add 10.0.200.0/24 dev eth1 src 10.0.200.251 table rt2
post-up ip route add default via 10.0.200.1 dev eth1 table rt2
post-up ip rule add from 10.0.200.251/32 table rt2
post-up ip rule add to 10.0.200.251/32 table rt2


ผลลัพธ์ได้ดังนี้

root@ubuntu:~# cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 10.0.100.20
netmask 255.255.255.0
gateway 10.0.100.1
dns-nameservers 192.100.77.10 192.100.77.11
post-up ip route add 10.0.100.0/24 dev eth0 src 10.0.100.20 table rt1
post-up ip route add default via 10.0.100.1 dev eth0 table rt1
post-up ip rule add from 10.0.100.20/32 table rt1
post-up ip rule add to 10.0.100.20/32 table rt1

auto eth1
iface eth1 inet static
address 10.0.200.251
netmask 255.255.255.0
post-up ip route add 10.0.200.0/24 dev eth1 src 10.0.200.251 table rt2
post-up ip route add default via 10.0.200.1 dev eth1 table rt2
post-up ip rule add from 10.0.200.251/32 table rt2
post-up ip rule add to 10.0.200.251/32 table rt2


ทำการ restart server
root@ubuntu:~# reboot