Hướng dẫn sử dụng SNAT và DNAT với iptables

Bài hướng dẫn này giới thiệu một số ví dụ về cách sử dụng SNAT và DNAT với iptables, cùng với một số quy tắc chặn gói tin trên các giao diện mạng. Dưới đây là tóm tắt các ví dụ theo thứ tự từng phần:

  1. Chuyển đổi tất cả các gói tin ra ngoài thành địa chỉ IP của WLAN0:
iptables -t nat -A PREROUTING -s 192.168.1.2 -i eth0 -j MASQUERADE
  1. Đặt địa chỉ IP nguồn của tất cả các gói tin ra khỏi eth0 thành địa chỉ IP của eth0:
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.1.1
  1. Chuyển đổi địa chỉ nguồn cho các gói tin từ Eth Devices với cổng nguồn đã chỉ định:
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p udp --dport 16020 -j SNAT --to 10.1.1.7:51889
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.2 -p tcp --dport 21 -j SNAT --to 10.1.1.7:21
iptables -t nat -A POSTROUTING -o wlan0 -s 192.168.1.3 -j SNAT --to 10.1.1.9
  1. Chuyển đổi các gói tin định tuyến đến địa chỉ IP 10.1.1.7 và 10.1.1.9 thành địa chỉ IP 192.168.1.2 và 192.168.1.3 tương ứng (cho cả giao thức UDP và TCP):
iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.7 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A PREROUTING -i wlan0 -d 10.1.1.9 -j DNAT --to-destination 192.168.1.3
  1. Chuyển đổi các gói tin TCP, UDP và tất cả các gói tin định tuyến đến địa chỉ IP 10.1.1.7 thành địa chỉ IP 192.168.1.2:
iptables -t nat -A PREROUTING -p tcp -i wlan0 -d 10.1.1.7 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A PREROUTING -p udp -i wlan0 -d 10.1.1.7 -j DNAT --to-destination 192.168.1.2
  1. Thay đổi cổng SNMP của các gói tin gửi đi:
iptables -t nat -A OUTPUT -p udp --dport 162 -j DNAT --to-destination 192.168.1.33:1162
  1. Thêm địa chỉ IP phụ vào giao diện WLAN0:
ip addr add 10.1.1.7/24 dev wlan0
ip addr add 10.1.1.9/24 dev wlan0
  1. Liệt kê tất cả các địa chỉ IP được gán cho giao diện wlan0:
ip add list dev wlan0
  1. Chuyển đổi tất cả các gói tin ra khỏi eth1 thành địa chỉ IP 192.168.20.1:
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.20.1
  1. Chuyển đổi tất cả các gói TCP ra khỏi eth1 và trên cổng 443 thành địa chỉ IP 192.168.20.1:
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p tcp --dport 443 -j SNAT --to 192.168.20.1:443
  1. Chuyển đổi tất cả các gói ICMP ra khỏi eth1 thành địa chỉ IP 192.168.20.1:
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p icmp -j SNAT --to 192.168.20.1
  1. Chuyển đổi tất cả các gói hỗ trợ ra khỏi eth1 có địa chỉ IP nguồn là 192.168.1.22 thành địa chỉ IP 192.168.20.1:
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.22 -p all -j SNAT --to 192.168.20.1
  1. SNAT đối với giao diện được gán động:
ip=$(ip -o addr show up primary scope global wlan1 |
      while read -r num dev fam addr rest; do echo ${addr%/*}; done)
echo $ip
iptables -t nat -A POSTROUTING -o wlan1 -j SNAT --to $ip
  1. Chặn giao thông từ ETH0 tới giao diện Cell trừ NTP:
iptables -I FORWARD -i eth0 -o usb0 -j DROP
iptables -I FORWARD -d pool.ntp.org -i eth0 -o usb0 -j ACCEPT
  1. Chặn giao thông trên ETH1 dựa trên các cổng:
iptables -t filter -A INPUT -i eth1 -p tcp --dport 80 -j DROP
iptables -t filter -A INPUT -i eth1 -p tcp --dport 443 -j DROP
iptables -t filter -A INPUT -i eth1 -p tcp --dport