Bài số 4: Thiết lập NAT cho Gateway

Tiếp tục sử dụng môi trường mạng đã thiết lập trong bài trước, cần cấu hình NAT trên router R3 để tất cả các trạm nội bộ của mạng Intranet có thể kết nối ra ngoài Internet. Các bước tiến hành như sau:

  • Bước 1: Kiểm tra kết nối Internet từ R3
  • Bước 2: Thiết lập NAT trên R3 với iptables

Bước 1: Kiểm tra kết nối Internet từ R3

Trước tiên, cần kiểm tra đảm bảo kết nối mạng Internet của máy host VirtualBox. Tiếp theo, kiểm tra cấu hình R3 đã được cấu hình NAT chính xác với mạng của máy host VirtualBox hay chưa. Thông thường, khi thiết lập một giao diện kết nối mạng của R3 để đi ra Internet bằng kiểu NAT, địa chỉ kết nối này của R3 có dạng 10.0.2.15. Ngoài ra, Default Gateway của R3 được thiết lập là 10.0.2.2 (chính là địa chỉ của máy host VirtualBox).

[root@R3 ~]# ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 08:00:27:36:E2:01  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:101941 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46548 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:113153758 (107.9 MiB)  TX bytes:2820938 (2.6 MiB)

[root@R3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.2.0     0.0.0.0         255.255.255.128 U     0      0        0 eth3
192.168.2.128   0.0.0.0         255.255.255.128 U     0      0        0 eth4
192.168.3.0     192.168.2.130   255.255.255.0   UG    0      0        0 eth4
192.168.3.0     192.168.2.2     255.255.255.0   UG    0      0        0 eth3
192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth4
10.0.2.0        0.0.0.0         255.255.255.0   U     1      0        0 eth1
192.168.1.0     192.168.2.1     255.255.255.0   UG    0      0        0 eth3
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth1

[root@R2 ~]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=44 time=95.6 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=44 time=90.1 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=44 time=100 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2499ms
rtt min/avg/max/mdev = 90.123/95.479/100.663/4.319 ms
			 

Bước 2: Thiết lập NAT trên R3 với iptables

Mặc dù R3 có thể kết nối đến địa chỉ 8.8.8.8 trên Internet, tuy nhiên, nếu đứng tại một trạm trong LAN3 và ping đến địa chỉ này sẽ thấy không thành công (lỗi time out). Lý do là gói tin ICMP có địa chỉ nguồn là 192.168.2.15 và địa chỉ đích là 8.8.8.8 được chương trình ping gửi đi qua Gateway R3 có thể đi đến máy 8.8.8.8 (vì R3 đã được kiểm tra có thể ping đến 8.8.8.8). Tuy nhiên, máy 8.8.8.8 khi gửi gói tin ICMP trả lời theo địa chỉ 192.168.2.15 sẽ không bao giờ đến được máy trong LAN3 do địa chỉ này không được định tuyến trên các router của mạng Internet. Giải pháp là thiết lập chức năng NAT cho router R3 để khi chuyển tiếp các gói tin từ mạng nội bộ (LAN3 hoặc LAN1, LAN2) ra ngoài Internet, nó sẽ thay thế địa chỉ nguồn bằng địa chỉ mặt ngoài của R3 (là 10.0.2.15). Điều này được thực hiện rất đơn giản bằng cách bổ sung luật MASQUERADE vào table nat:

[root@mydomain ~]# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
[root@mydomain ~]# iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 46 packets, 5273 bytes)
pkts   bytes   target     prot         opt     in     out     source               destination

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts   bytes   target                  prot    opt     in     out     source               destination
1           84      MASQUERADE      all     --      any  eth2   anywhere            anywhere

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
pkts   bytes   target     prot         opt     in     out     source               destination

Chú ý kiểm tra đúng card mạng eth1 là kết nối mặt ngoài của router R3. Sau khi bổ sung luật này, trạm trong mạng LAN3 đã có thể kết nối ra Internet:

> ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=42 time=67.1 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=42 time=65.6 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=42 time=65.3 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2761ms
rtt min/avg/max/mdev = 65.360/66.064/67.141/0.773 ms

> traceroute -n 8.8.8.8
traceroute to 8.8.8.8 (8.8.8.8), 30 hops max, 60 byte packets
1  192.168.2.1  1.838 ms  0.889 ms  0.755 ms
2  192.168.2.2  2.223 ms  2.173 ms  2.112 ms
3  10.0.2.2  2.051 ms  2.307 ms  10.234 ms
4  * * *

Không chỉ các trạm thuộc LAN3 mà bất cứ trạm nào của LAN1 hay LAN2 cũng như các router R1, R2 bây giờ đã có thể kết nối Internet thông qua chức năng NAT tại R3. NAT làm việc độc lập với giao thức tầng ứng dụng. Kiểm chứng điều này bằng cách đứng tại một trạm bất kỳ trong các mạng LAN và dùng browser duyệt các trang web trên Internet.