Chương 2. Ứng dụng TCP/IP & Intranet
3.4 Các bài thực hành
3.4.1 Bài số 1: Thiết lập Gateway cho MyCompany Intranet
Trong bài này, cần thiết lập một Gateway cho phép các máy trạm trong mạng Intranet của công ty kết nối ra bên ngoài mạng Internet.
Internet Gateway
PC outside MyCompany
MyCompany Intranet
PC in MyCompany
Mail Server
DNS Server
Hình vẽ 4: Kết nối Intranet Gateway với Internet Cấu hình Gateway
Gateway được cấu hình 2 card mạng – eth1 có địa chỉ IP 192.168.56.3 để kết nối trong nội bộ mạng Intranet của công ty và eth2 có địa chỉ IP 203.162.1.100 kết nối ra ngoài mạng Internet:
Mặc định, máy Gateway cài CentOS không bất chức năng “forward”. Tức là tất cả các gói tin mặc định được xử lý ở nội bộ máy Gateway mà không được chuyển tiếp sang các máy khác. Cụ thể là trong bước routing (xem Hình vẽ 7: Đường đi của gói tin ứng với các bước xử lý trong iptables), các gói tin đều được chuyển vào nhánh xử lý nội bộ máy chủ. Khi máy chủ là một Gateway, phần lớn kết quả xử lý bước routing là gói tin được forward từ mạng nội bộ sang mạng ngoài hoặc ngược lại. Tham số hệ thống net.ipv4.ip_forward xác định
> ifconfig -a
eth1 Link encap:Ethernet HWaddr 08:00:27:96:4A:E6
inet addr:192.168.56.3 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe96:4ae6/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:337 errors:0 dropped:0 overruns:0 frame:0 TX packets:102 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:36556 (35.6 KiB) TX bytes:15761 (15.3 KiB) eth2 Link encap:Ethernet HWaddr 08:00:27:D7:D8:3E
inet addr:203.162.1.100 Bcast:203.162.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fed7:d83e/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:63 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:7542 (7.3 KiB) TX bytes:636 (636.0 b)
> netstat -rn
Kernel IP routing table Destination
192.168.56.0 169.254.0.0
Gateway 0.0.0.0 0.0.0.0
Genmask Flags MSS Window irtt Iface 255.255.255.0 U
255.255.0.0U 0.0.0.0192.168.56.3 0.0.0.0UG
0 00 eth1 0 00 eth1 0 00 eth1
chức năng forward đang được bật hay đóng. Có thể sử dụng lệnh sysctl để hiển thị giá trị các tham số cấu hình hệ thống hoặc để đặt lại tham số cấu hình này:
Có thể sửa giá trị mặc định của tham số này trong file /etc/sysctl.conf:
Cấu hình các máy trạm hp.mydomain.com
Trên các máy trạm của mạng Intranet, thiết lập cấu hình IP nội bộ theo dải 192.168.56.x và gateway là 192.168.56.3:
Kiểm tra cấu hình mạng trên các máy trạm. Địa chỉ 0.0.0.0 đại diện các mạng bên ngoài mạng nội bộ và tương ứng với nó, gateway được sử dụng là 192.168.56.3:
Cấu hình các máy ngoài mạng outside
Để test hệ thống, cần cấu hình một máy nằm ngoài mạng Intranet (đặt tên là máy outside). Để cho đơn giản, thiết lập cấu hình IP của máy này phù hợp với địa chỉ mạng của IP
“mặt ngoài” của Gateway (là 203.162.1.100):
> sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 0
> sysctl -w net.ipv4.ip_forward=1 net.ipv4.ip_forward = 1
> nano /etc/sysctl.conf
# Controls IP packet forwarding net.ipv4.ip_forward = 1
> nano /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1"
IPADDR=192.168.56.5 NETMASK=255.255.255.0
> nano /etc/sysconfig/network NETWORKING=yes
HOSTNAME=hp.mydomain.com GATEWAY=192.168.56.3
> nano /etc/sysconfig/network NETWORKING=yes
HOSTNAME=outside GATEWAY=203.162.1.100
Kiểm tra bảng routing trên máy outside, đảm bảo các gói tin cần gửi đến mạng Intranet 192.168.56.0 phải được chuyển tiếp qua Gateway 203.162.1.100.
> netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface 203.162.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1 0.0.0.0 203.162.1.100 0.0.0.0 UG 0 0 0 eth1
Kiểm tra kết nối hệ thống
Từ máy outside kiểm tra kết nối với Gateway bằng lệnh ping và tracepath (có thể sử dụng traceroute thay cho tracepath):
Kiểm tra ngược lại, ping & tracepath từ Gateway đến máy outside:
Bên trong mạng Intranet, sử dụng ping & tracepath để kiểm tra kết nối giữa máy client hp.mydomain.vn và Gateway:
[root@outside]# ping 203.162.1.100
PING 203.162.1.100 (203.162.1.100) 56(84) bytes of data.
64 bytes from 203.162.1.100: icmp_seq=1 ttl=64 time=0.493 ms 64 bytes from 203.162.1.100: icmp_seq=2 ttl=64 time=0.853 ms [root@outside]# tracepath -n 203.162.1.100
1?: [LOCALHOST] pmtu 1500 1: 203.162.1.100 1.659ms !H 1: 203.162.1.100 1.713ms !H
Resume: pmtu 1500
[root@mydomain.vn]# ping 203.162.1.200
PING 203.162.1.200 (203.162.1.200) 56(84) bytes of data.
64 bytes from 203.162.1.200: icmp_seq=1 ttl=64 time=0.493 ms 64 bytes from 203.162.1.200: icmp_seq=2 ttl=64 time=0.853 ms [root@mydomain.vn]# tracepath -n 203.162.1.200
1?: [LOCALHOST] pmtu 1500 1: 203.162.1.200 1.130ms !H 1: 203.162.1.200 0.811ms !H
Resume: pmtu 1500
[root@hp.mydomain.vn]# ping 192.168.56.3
PING 192.168.56.3 (192.168.56.3) 56(84) bytes of data.
64 bytes from 192.168.56.3: icmp_seq=1 ttl=64 time=3.26 ms 64 bytes from 192.168.56.3: icmp_seq=2 ttl=64 time=0.320 ms 64 bytes from 192.168.56.3: icmp_seq=3 ttl=64 time=1.05 ms [root@hp.mydomain.vn]# tracepath -n 192.168.56.3
1?: [LOCALHOST]pmtu 1500 1: 192.168.56.3 1.299ms !H 1: 192.168.56.3 0.648ms !H
Resume: pmtu 1500
Cuối cùng, sử dụng ping và tracepath để kiểm tra kết nối giữa máy client hp.mydomain.vn với máy outside:
Ta có thể thấy tracepath đã chạy thông nhưng ping lại chưa thành công. Nếu ping và tracepath từ máy outside vào máy hp.mydomain.vn thì kết quả cũng tương tự:
Nhìn vào kết quả lệnh ping, có thể thấy khi đi qua máy Gateway, các gói tin bị ngăn lại. Lý do là máy Gateway chạy CentOS mặc định cấu hình iptables ngăn tất cả các gói tin đi qua trong khi vẫn chấp nhận gửi & nhận gói tin ICMP:
[root@hp.mydomain.vn]# ping 192.168.1.200
PING 192.168.1.200 (192.168.1.200) 56(84) bytes of data.
From 192.168.56.3 icmp_seq=1 Destination Host Prohibited From 192.168.56.3 icmp_seq=2 Destination Host Prohibited [root@hp.mydomain.vn]# tracepath -n 192.168.1.200
1?: [LOCALHOST] pmtu 1500 1: 192.168.56.3 1.086ms 1: 192.168.56.3 1.765ms 2: 192.168.56.3 1.086ms !H
Resume: pmtu 1500
[root@outside]# ping 192.168.56.5
PING 192.168.56.5 (192.168.56.5) 56(84) bytes of data.
From 203.162.1.100 icmp_seq=1 Destination Host Prohibited From 203.162.1.100 icmp_seq=2 Destination Host Prohibited [root@outside]# tracepath -n 192.168.1.200
1?: [LOCALHOST] pmtu 1500 1: 192.168.56.3 1.086ms 1: 192.168.56.3 1.765ms 2: 192.168.56.3 1.086ms !H
Resume: pmtu 1500
[]# iptables -L -v
Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes targetprot opt inoutsource 183 15392 ACCEPTall -- any anyanywhere
anywhere
all -- loanyanywhere
tcp -- any anyanywhere 566 66385 REJECTall -- any anyanywhere destination
anywhere anywhere anywhere anywhere anywhere
state RELATED,ESTABLISHED 1
0 0
84 ACCEPT 0 ACCEPT 0 ACCEPT
icmp -- any any
state NEW tcp dpt:ssh
reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes targetprot opt inoutsourcedestination 306 29680 REJECTall -- any anyanywhereanywhere
reject-with icmp-host-prohibited
> service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules:[ OK ]
iptables: Unloading modules:[ OK ]
Chain OUTPUT (policy ACCEPT 329 packets, 48528 bytes) pkts bytes targetprot opt inout source
destination Chain FORWARD (policy ACCEPT) target prot opt source destination
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Trong bài thực hành này, ta chưa cần quan tâm đến việc xử lý firewall tại Gateway nên tạm thời tắt chức năng iptables đi:
Sử dụng ping và tracepath để kiểm tra kết nối giữa máy client hp.mydomain.vn với máy outside, kết quả là mạng đã thông: