---
title: "Centos 6 + iptables 作为网关NAT转发、端口转发笔记"
id: "165"
type: "post"
slug: "centos-6-iptables-%e4%bd%9c%e4%b8%ba%e7%bd%91%e5%85%b3nat%e8%bd%ac%e5%8f%91%e3%80%81%e7%ab%af%e5%8f%a3%e8%bd%ac%e5%8f%91%e7%ac%94%e8%ae%b0"
published_at: "2018-07-15T15:09:05+00:00"
modified_at: "2018-09-12T12:45:48+00:00"
url: "https://www.hitsword.org/2018/165.html"
markdown_url: "https://www.hitsword.org/2018/165.md"
excerpt: "偶尔会使用iptables的NAT转发功能，但是每次都没做笔记。每次都忘记导致调试半天。还是做个笔记吧： 首先 […]"
taxonomy_category:
  - "网关"
taxonomy_post_tag:
  - "Centos"
  - "iptables"
  - "NAT"
  - "端口"
  - "网关"
---

# Centos 6 + iptables 作为网关NAT转发、端口转发笔记

偶尔会使用iptables的NAT转发功能，但是每次都没做笔记。每次都忘记导致调试半天。还是做个笔记吧：  
 **首先开启ip转发功能**

```
echo "1" > /proc/sys/net/ipv4/ip_forward
#修改net.ipv4.ip_forward = 1
vim /etc/sysctl.conf
#生效配置文件。
sysctl -p
```

  
**以下命令3选一**  
```
#只指定出口网卡
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#指定只转发192.168.254.0/24段与出口网卡
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j MASQUERADE
#指定只转发192.168.254.0/24段与出口IP 192.184.1.2
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j SNAT --to-source 192.184.1.2
```

  
**只放行192.168.254.0/24网段转发**  
```
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.254.0/24 -j ACCEPT
```

  
**端口映射**  
```
#把eth0网卡的TCP 21999端口映射给192.168.254.6的8999(如果前后两个端口相同,后面可以不写)
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 21999 -j DNAT --to-destination 192.168.254.6:8999
#放行TCP 8999端口转发
iptables -A FORWARD -p tcp -m tcp --dport 8999 -j ACCEPT
#把eth0网卡的UDP 21999端口映射给192.168.254.6的8999(如果前后两个端口相同,后面可以不写)
iptables -t nat -A PREROUTING -i eth0 -p udp -m udp --dport 21999 -j DNAT --to-destination 192.168.254.6:8999
#放行UDP 8999端口转发
iptables -A FORWARD -p udp -m udp --dport 8999 -j ACCEPT
#列出所有转发规则
iptables -t nat -L -n
```
