NAT server with iptables, NAT server on linux, NAT, Cau hinh 2 card mạng Step-By-Step Configuration of NAT with iptables
Bài cấu hình NAT này cho phép nhiều card mạng trên một máy có thể forward gói tin với nhau. Ngoài ra nó còn hoạt động như hệ thống gateway để cung cấp việc truy cập giữa mạng ngoài và mạng local thông qua một IP.
Mọi thứ sẽ rõ ràng hình dung hơn qua ví dụ mình sắp chia sẻ dưới đây.

smug Đây là topology của mô hình NAT server s xây dựng trên máy ảo VMware 7.0, OS là RedHat Enterprise 5.
#bl3 Short explain: Mình sẽ tạo ra 2 máy ảo trên VMware
  • LAN PC: Đại diện cho mạng Local, có 1 card mạng (Host-only) với IP 10.0.0.2/8.
  • NAT server: Máy chủ NAT kết nối giữa Internal và External network, có 2 card mạng - eth1 nối với LAN gọi Private (Host-only) có IP 10.0.0.1/8 và eth0 nối với mạng ngoài gọi Public (Brigde) 192.168.1.2/24
  • Máy thật: Đại diện cho máy mạng ngoài 192.168.1.3/24
#bl3 Với lược đồ này, khi iptables đã được khởi động ( $ service iptables status) trên NAT Server thì không thể nào ping được giữa Local và máy ngoài (máy thật) với nhau. Để khắc phục điều đó hãy cấu hình NAT cho server, các bước thực hiện trên NAT Server.
  1. Cấu hình cho card mạng Public
  2. Cấu hình cho card mạng Private
  3. Đặt hostname, gateway và DNS server
  4. Cấu hình NAT với iptables
  5. Testing
coffee - coffee
#bl1Bước 1: Cấu hình cho card mạng Public
$vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
HWADDR=00:50:BA:88:72:D4
IPADDR=192.168.1.2
NETMASK=255.255.255.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
GATEWAY=192.168.1.3                # IP máy thật

#bl2Trên thực tế, ở card mạng này sẽ cấu hình theo thông số mà ISP cung cấp để ra internet. Trong mô hình này chúng ta chỉ mô phỏng internet bằng máy thật, do đó trỏ gateway đến nó.

#bl1Bước 2: Cấu hình cho card mạng Private
$vi /etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE=eth1
BOOTPROTO=none
HWADDR=00:50:BA:78:7A:D4
IPADDR=10.0.0.1
NETMASK=255.0.0.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
# Không đặt gateway nữa

#bl2 Khởi động lại card mạng
$service network restart

#bl1Bước 3: Đặt hostname, gateway và DNS server
#bl2 Cấu hình hostname cho NAT server.
$vi /etc/hosts

127.0.0.1 nat localhost.localdomain localhost
#bl2 Đặt gateway như đã làm với card mạng Public
$vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=nat
GATEWAY=192.168.1.3
#bl2 Hãy cung cấp DNS do IPS cung cấp
$vi /etc/resolv.conf

nameserver 8.8.8.8
nameserver 202.56.250.5
#bl2 Trên LAN, cấu hình Gateway trỏ tới NAT server.
$vi /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=lanpc
GATEWAY=10.0.0.1
Sau khi cấu hình nhớ restart lại dịch vụ tương ứng.

#bl1Bước 4: Cấu hình NAT với iptables
#bl2 Kiểm tra sự tồn tại của iptable
$ rpm -qa | grep iptables
$ service iptables status

#bl2 Xóa sạch flush và filter mặc định của iptable (không nhất thiết!)
$ iptables --flush
$ iptables --table nat --flush
$ iptables --delete-chain
$ iptables --table nat --delete-chain
#bl2 Cài đặt FORWARD and Masquerading, với FORWARD chỉ có tác dụng chuyển gói trong Local do đó cần Masquerading để ra mạng ngoài qua eth0.
$ iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE

$iptables --append FORWARD --in-interface eth1 -j ACCEPT
#bl2 Kích hoạt chế độ chuyển gói trong kernel
$echo 1 > /proc/sys/net/ipv4/ip_forward
#bl2 Lưu và khởi động lại dịch vụ.
$service iptables save
$service iptables restart

#bl1Bước 5: Testing
Bây giờ từ LAN bạn có thể ping thấy máy thật bên ngoài, nhưng ngược lại thì không.
$ping 192.168.1.3      

Tham khảo
#lnk http://docs.redhat.com/.../firewall-ipt-fwd.html
#lnk http://www.youtube.com/embed/lbpGO_UrGFs