Bài số 5: Thiết lập Port forwarding cho NAT Gateway
Bài này thực hiện phương án kết nối ngược với bài trên, tức là cho phép kết nối từ ngoài mạng Internet vào mạng nội bộ. Các bước thực hiện như sau:
- Bước 1: Kiểm tra kết nối ngược từ Internet vào R3
- Bước 2: Kết nối ứng dụng client-server từ máy host VirtualBox vào R3
- Bước 3: Thiết lập Port forwarding trên R3 bằng iptables
Bước 1: Kiểm tra kết nối ngược từ Internet vào R3
Để tránh phải xử lý phức tạp tại Gateway kết nối Internet của máy host VirtualBox, tạm coi môi trường bên ngoài Internet là máy host VirtualBox này. Trường hợp muốn kết nối từ một trạm ngoài Internet, cần thiết lập thêm Port Forwarding trên máy Gateway kết nối Internet của máy host VirtualBox.
Chuyển kết nối Internet của R3 từ NAT sang kiểu Host-only Adapter và được gán địa chỉ 192.168.56.105. Máy host VirtualBox có địa chỉ 192.168.56.1. Kiểm tra bằng lệnh ping từ R3 sang máy host VirtualBox:
[root@R3 ~]# ifconfig eth1 eth2 Link encap:Ethernet HWaddr 08:00:27:4D:E2:02 inet addr:192.168.56.105 Bcast:192.168.56.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2980 errors:0 dropped:0 overruns:0 frame:0 TX packets:105 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:464620 (453.7 KiB) TX bytes:6790 (6.6 KiB) [root@R3 ~]# ping 192.168.56.1 PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data. 64 bytes from 192.168.56.1: icmp_seq=1 ttl=128 time=0.614 ms 64 bytes from 192.168.56.1: icmp_seq=2 ttl=128 time=0.641 ms 64 bytes from 192.168.56.1: icmp_seq=3 ttl=128 time=0.602 ms ^C --- 192.168.56.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2430ms rtt min/avg/max/mdev = 0.602/0.619/0.641/0.016 ms
Kiểm tra kết nối ngược lại, từ máy host VirtualBox vào R3:
C:\Users\HP>ipconfig /all Ethernet adapter VirtualBox Host-Only Network #2: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : VirtualBox Host-Only Ethernet Adapter #2 Physical Address. . . . . . . . . : 0A-00-27-00-00-0D DHCP Enabled. . . . . . . . . . . : No Autoconfiguration Enabled . . . . : Yes Link-local IPv6 Address . . . . . : fe80::659b:1f2b:17ba:955a%13(Preferred) IPv4 Address. . . . . . . . . . . : 192.168.56.1(Preferred) Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : DHCPv6 IAID . . . . . . . . . . . : 285868071 DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-1B-4E-AB-07-EC-F4-BB-4F-20-42 DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1 NetBIOS over Tcpip. . . . . . . . : Enabled Wireless LAN adapter Wireless Network Connection: Connection-specific DNS Suffix . : Description . . . . . . . . . . . : Dell Wireless 1506 802.11b/g/n (2.4GHz) Physical Address. . . . . . . . . : 18-CF-5E-5D-17-C7 DHCP Enabled. . . . . . . . . . . : Yes Autoconfiguration Enabled . . . . : Yes IPv4 Address. . . . . . . . . . . : 10.247.158.105(Preferred) Subnet Mask . . . . . . . . . . . : 255.255.255.0 Lease Obtained. . . . . . . . . . : Monday, August 29, 2016 10:13:18 PM Lease Expires . . . . . . . . . . : Wednesday, August 31, 2016 12:31:24 AM Default Gateway . . . . . . . . . : 10.247.158.131 DHCP Server . . . . . . . . . . . : 10.247.158.131 DNS Servers . . . . . . . . . . . : 4.4.4.4 8.8.8.8 NetBIOS over Tcpip. . . . . . . . : Enabled C:\Users\HP>ping 192.168.56.105 Pinging 192.168.56.105 with 32 bytes of data: Reply from 192.168.56.105: bytes=32 time<1ms TTL=64 Reply from 192.168.56.105: bytes=32 time<1ms TTL=64 Reply from 192.168.56.105: bytes=32 time<1ms TTL=64 Ping statistics for 192.168.56.105: Packets: Sent = 3, Received = 3, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms Control-C
Bước 2: Kết nối ứng dụng client-server từ máy host VirtualBox vào R3
Để thực hiện kịch bản kết nối ngược từ Internet vào mạng nội bộ, sử dụng lại các chương trình tcpserver và tcpclient trong các bài tập chương 2, trên máy R3 chạy tcpserver, trên máy host VirtualBox chạy tcpclient. Mặc định, tiến trình iptables trong Linux ngoài việc chặn tất cả các gói tin được route qua các card mạng (chain FORWARD), nó còn chặn tất cả các gói tin đi vào (chain INPUT). Cần bỏ các rule này ra để tcpclient ngoài mạng Internet có thể liên lạc với tcpserver
Cần bỏ các rule này ra để tcpclient ngoài mạng Internet có thể liên lạc với tcpserver trên router R3 tại cổng 6789:
Sau khi bỏ các rule REJECT nêu trên, chạy tcpserver trên R3 và chạy tcpclient trên máy host Windows, kết quả là các chương trình đã kết nối và trao đổi thông tin thành công:
Kết quả chạy tcpserver trên R3:
Bước 3: Thiết lập Port forwarding trên R3 bằng iptables
Như vậy là client ngoài mạng Internet đã truy nhập được vào cổng 6789 của router R3. Tuy nhiên, chưa thể truy nhập đến một dịch vụ bất kỳ trong mạng nội bộ. Ví dụ, tại máy trạm trong LAN3 (có địa chỉ 192.168.2.15), chạy tcpserver ở cổng 6789. Từ client host Windows bên ngoài (có địa chỉ 192.168.56.1), chạy tcpclient và thấy rằng không thể truy nhập đến dịch vụ tcpserver trên máy 192.168.2.15. Để có thể truy nhập từ ngoài vào trong, cần thiết lập port forwarding trên router R3:
Sau lệnh này, tcpclient trên máy Windows khi kết nối với địa chỉ mặt ngoài của R3 (là 192.168.56.105) đã có thể liên lạc với tcpserver tại máy trạm của LAN3 (có địa chỉ 192.168.2.15):
Sử dụng tcpdump để bắt các gói tin trên 2 card mạng của R3 (mặt ngoài và mặt trong) sẽ thấy các gói tin IP mà gửi đến cổng 6789 của card mạng mặt ngoài được forward sang card mạng mặt trong và thay đổi địa chỉ đích thành 192.168.2.15: