怎么用IPTABLES配置端口映射?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么用IPTABLES配置端口映射?相关的知识,希望对你有一定的参考价值。

参考技术A 复制的。希望对你能有帮助
iptables 端口映射 实现步骤如下:
一、环境和要实现功能
PC1的网络设置如下:
eth0 192.168.0.29 内网
eth1 219.239.11.22 外网
PC2的网络设置则为:192.168.0.21 内网
我们要实现的功能就是将PC1的8080端口映射到PC2的80端口,也即访问
http://219.239.11.22:8080
即可访问到PC2上的WEB服务。
  二、实现步骤
1、 首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0
这样允许iptalbes FORWARD。
2、 在/etc/rc.d/init.d目录下有iptables 文件,使用格式如下
Usage: ./iptables start|stop|restart|condrestart|status|panic|save
相当与service iptables ….
把iptables 服务停止,清除以前的规则,存盘
到/etc/rc.d/init.d目录下,运行
./iptables stop
iptalbes -F
iptalbes -X
iptalbes -Z
./iptables save
3、 重新配置规则
iptables -t nat -A PREROUTING -d 219.239.11.22 -p tcp -m tcp --dport 8080 -j
DNAT --to-destination 192.168.0.21:80
iptables -t nat -A POSTROUTING -d 192.168.0.21 -p tcp -m tcp --dport 80 -j SNAT
--to-source 192.168.0.29
iptables -A FORWARD -o eth0 -d 192.168.0.21 -p tcp –dport 80 -j ACCEPT
iptables -A FORWARD -i eth0 -s 192.168.0.21 -p tcp –sport 80 -j ACCEPT
DNAT SNAT 的请参考帮助,这里不再陈述。
4、 新的规则存盘
./iptables save
规则存盘后在/etc/sysconfig/iptables这个文件里面,若你对这个文件很熟悉
直接修改这里的内容也等于命令行方式输入规则。
5、 启动iptables 服务
./iptables start
在/proc/net/ip_conntrack文件里有包的流向,如下面
tcp 6 53 TIME_WAIT src=../../221.122.59.2 dst=219.239.11.22 sport=7958
dport=8080 packets=9 bytes=1753
src=../../172.18.10.205 dst=172.18.10.212 sport=80 dport=7958 packets=9
bytes=5777 [ASSURED] use=1
通过文章的介绍,我们都可以清楚的看清iptables 端口映射实现的每个步骤!希望对大家有帮助!
参考技术B 那再受重用

使用iptables为docker容器动态添加端口映射

1、将当前iptables的配置写入保存到/etc/sysconfig/iptables

2、保存

/etc/init.d/iptables sava

3、修改iptables配置(vi /etc/sysconfig/iptables):

在适当位置增加下面红色的三行,然后重启iptables即可。(30612 是容器对外提供服务的端口)

-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.17.0.10/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9000 -j ACCEPT
-A DOCKER -d 172.17.0.117/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.17.0.7/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 32095 -j ACCEPT
-A DOCKER -d 172.17.0.7/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 30612 -j ACCEPT
COMMIT
# Completed on Thu Mar  3 13:34:42 2016
# Generated by iptables-save v1.4.7 on Thu Mar  3 13:34:42 2016
*nat
:PREROUTING ACCEPT [267:19881]
:POSTROUTING ACCEPT [8:480]
:OUTPUT ACCEPT [8:480]
:DOCKER - [0:0]
-A PREROUTING -p tcp -m tcp --dport 32095 -j DNAT --to-destination 172.17.0.7:32095
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -s 172.17.0.10/32 -d 172.17.0.10/32 -p tcp -m tcp --dport 9000 -j MASQUERADE
-A POSTROUTING -s 172.17.0.117/32 -d 172.17.0.117/32 -p tcp -m tcp --dport 8080 -j MASQUERADE
-A POSTROUTING -s 172.17.0.7/32 -d 172.17.0.7/32 -p tcp -m tcp --dport 32095 -j MASQUERADE
-A POSTROUTING -s 172.17.0.7/32 -d 172.17.0.7/32 -p tcp -m tcp --dport 30612 -j MASQUERADE
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 9000 -j DNAT --to-destination 172.17.0.10:9000
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 54321 -j DNAT --to-destination 172.17.0.117:8080
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 32095 -j DNAT --to-destination 172.17.0.7:32095
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 30612 -j DNAT --to-destination 172.17.0.7:30612
COMMIT
# Completed on Thu Mar  3 13:34:42 2016

最后:

重启iptables服务

# centos6.x
service iptables restart

# centos7.x
systemctl restart iptables.service

以上是关于怎么用IPTABLES配置端口映射?的主要内容,如果未能解决你的问题,请参考以下文章

使用iptables为docker容器动态添加端口映射

iptables nat及端口映射

KVM虚拟机使用NAT+iptables做端口映射

centos 7的防火墙怎么开放端口

iptables 允许端口,端口映射,删除iptables

iptables 配置问题