iptables实现端口映射

情景模拟

有主机A,eth0的IP为内网IP:192.168.56.101,eth1为公网IP:120.77.36.222。
有主机B,eth0的IP为内网IP:192.168.56.102。

可以通过外网访问主机A,主机B和主机A在同一个局域网。

想要访问外网访问主机B的Web服务,怎么办?答:使用端口映射。

具体配置

开启路由功能

sudo echo 1 > /proc/sys/net/ipv4/ip_forward
如果报错:-bash: /proc/sys/net/ipv4/ip_forward: Permission denied
那就切换到root用户:
sudo -i
echo 1 > /proc/sys/net/ipv4/ip_forward

要想永久有效,还要把/etc/sysctl.conf文件里边的net.ipv4.ip_forward的值改为1。

端口映射

参考linux下用用iptables做端口映射的shellUbuntu 14.04 端口映射,具体配置如下:

1、新建portmap.sh,内容如下:

#!/bin/bash
pro='tcp'
NAT_Host='192.168.56.101'
NAT_Port=3480
Dst_Host='192.168.56.102'
Dst_Port=80
iptables -t nat -A PREROUTING -m $pro -p $pro --dport $NAT_Port -j DNAT --to-destination $Dst_Host:$Dst_Port
iptables -t nat -A POSTROUTING -m $pro -p $pro --dport $Dst_Port -d $Dst_Host -j SNAT --to-source $NAT_Host

2、添加执行权限
sudo chmod a+x portmap.sh

3、执行脚本
sudo ./portmap.sh

4、测试访问
curl 192.168.56.102,正常。
curl 192.168.56.101:3480,报错curl: (7) Failed to connect to 192.168.56.103 port 3480: Connection refused。
啊嘞,没有配置成功吗?莫非时因为端口没有打开?测试下3480端口:
telnet 192.168.56.101 3480,报错telnet: Unable to connect to remote host: Connection refused。
打开端口试试?
sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3480 -j ACCEPT
然而,并没有什么用!

直接用浏览器访问 http://192.168.56.101:3480 ,访问正常。。。心中万马奔腾。。。curl有坑啊!

直接用浏览器访问 http://120.77.36.222:3480 ,访问正常。

5、如果不需要端口映射了,可以删除添加的规则
sudo iptables -t nat -vnL PREROUTING --line-number

sudo iptables -t nat -nL --line-number

sudo iptables -t nat -D PREROUTING 1

sudo iptables -t nat -D POSTROUTING 1

6、设置重启后依然有效
参考《Linux配置SNAT上网》

本机端口映射

有主机A,eth0的IP为内网IP:192.168.56.101,eth1为公网IP:120.77.36.222。

访问 http://192.168.56.101 正常,访问 http://120.77.36.222 失败。这是因为,电信会封锁80端口和8080端口。为了使外网也可以访问80端口的服务,可以把10180端口映射为80端口。

sudo iptables -t nat -A PREROUTING -p tcp --dport 10180 -j REDIRECT --to-ports 80

然后,就可以通过 http://120.77.36.222:10180 来访问80端口的服务。

推荐阅读更多精彩内容

  • 本文整理了在实践过程中使用的Linux网络工具,这些工具提供的功能非常强大,我们平时使用的只是冰山一角,比如lso...
    老夫刘某阅读 2,848评论 0 7
  • 防火墙的概念iptables的简介iptables命令网络防火墙NATfirewalld服务 一、防火墙的概念 (...
    哈喽别样阅读 1,565评论 0 1
  • 一、设置主机防火墙。 开放: 服务器的:web服务、vsftpd 文件服务、ssh远程连接服务、ping 请求。 ...
    大福技术阅读 953评论 0 0
  • 前言 一个局域网中,主机之间互联,其中只有一台主机可以上网,其他主机想要上网怎么办?答:使用SNAT。 情景模拟 ...
    VoidKing阅读 4,160评论 3 4
  • “我希望以后可以盖一所房子,里头有壁炉,挂满了油画。” “那一定很漂亮,到时我一定要去你家玩。” “不行。” “为...
    熊猫微刊阅读 248评论 0 3
  • 没有交习作,心里很愧疚的,没交,是我找借口了。上午瑜伽,下午去参加现金流分享,晚上回家感觉精力已耗尽,随便写线下分...
    YYmore阅读 163评论 0 1
  • 每个人都有过年轻,而年轻绝不代表着恣意放纵和为所欲为,总以为我们年轻就是本钱,因此生吃海喝、暴饮暴食、通宵熬夜、体...
    云皞阅读 68评论 1 0
  • 奔跑 在漆黑的夜里 孤独相伴 只为听见那黑夜里的歌 寻觅撩人的夜光 沉思 在静谧的夜里 黑暗为舞 只为触碰力量中的...
    温觉阅读 328评论 0 0
  • 这是永澄老师于2017年4月10日早晨6:00更新的文章,归入“理念”一类。 一、意见反馈 永澄老师在自我改革的路...
    Ares1981阅读 193评论 0 2