使用iptables做端口转发

通过iptables可以做转发

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
IPT="/sbin/iptables"
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -Z
$IPT -t nat -Z
#DNAT 做端口转发
$IPT -t nat -A PREROUTING -d 192.168.19.102 -p tcp --dport 33 -j DNAT --to-destination 192.167.19.101:22
#SNAT 做端口转发
$IPT -t nat -A POSTROUTING -p tcp -d 192.167.19.101 --dport 22 -j SNAT --to-source 192.167.19.102

#SNAT 做网关转发
#$IPT -t nat -A POSTROUTING -s 192.168.0.0/16 -j SNAT --to-source 210.72.24.15
```
说明:
DNAT 做端口转发
是将对外网ip 192.168.19.102的访问,映射到对内网ip 192.167.19.101的访问;

一内一外的双网卡转一内的单网卡的时候,上面的配置信息里面实际是有三个IP信息的

备注:

首先需要启用NAT需要在Linux上打开内核对IP包的转发支持,linux上编辑:/etc/sysctl.conf 文件:
```bash
net.ipv4.ip_forward = 1

然后执行

1
sysctl -p

对于单网卡虚拟网卡的场景

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/sh 
IPT="/sbin/iptables"
/bin/echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_nat
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
$IPT -F
$IPT -t nat -F
$IPT -X
$IPT -t nat -X
$IPT -Z
$IPT -t nat -Z

iptables -t nat -A PREROUTING -p tcp --dport 8082 -i enp6s0f1 -d 20.20.20.247 -j DNAT --to-destination 192.168.0.1:80
iptables -t nat -A POSTROUTING -j MASQUERADE

上面的操作可以配置虚拟网卡iptable转发的访问

写于: 2014年08月04日
更新于: 2015年03月24日