独角兽企业重金招聘Python工程师标准>>>
Linux系统端口映射(路由转发),首先应该做的是/etc/sysctl.conf配置文件的 net.ipv4.ip_forward = 1 默认是0。
启用网卡转发功能
# echo 1 >/proc/sys/net/ipv4/ip_forward
这样允许iptalbes FORWARD。
此规则及时生效,但重启后就失效了,需要在配置文件里添加
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1net.ipv4.conf.default.rp_filter = 1net.ipv4.conf.default.accept_source_route = 0kernel.sysrq = 0kernel.core_uses_pid = 1net.ipv4.tcp_syncookies = 1kernel.msgmnb = 65536#每个消息队列的最大字节限制kernel.msgmax = 65536#每个消息的最大sizekernel.shmmax = 68719476736#内核参数定义单个共享内存段的最大值kernel.shmall = 4294967296#控制共享内存页数
# sysctl –p(使之立即生效)
默认值0
是禁止ip转发,修改为1
即开启ip转发功能。
配置端口转发
vi /etc/sysconfig/iptables 添加*nat段
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 202.168.349.101 -p tcp --dport 16688 -j DNAT --to-destination 192.168.2.35:16688
-A POSTROUTING -d 192.168.2.35 -p tcp --dport 16688 -j SNAT --to 192.168.2.55
COMMIT
其中,202.168.349.101为外网ip,192.168.2.35为内网ip,16688为做转发的端口,192.168.2.55为转发到的目标ip
重启iptables
service iptables restart
测试转发
telnet 192.168.2.35 16688
本机端口转发
如果只需要在本机间不同的端口转发就比较容易了,比如 访问http://ip:729我想返回http://ip:80的内容,配置如下:
[root@localhost sbin]# iptables -t nat -A PREROUTING -p tcp --dport 729 -j REDIRECT --to-ports 80 [root@localhost sbin]# service iptables save [root@localhost sbin]# service iptables restart