转自: https://blog.csdn.net/daqiang012/article/details/103947313?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162848234916780357255732%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162848234916780357255732&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_click~default-2-103947313.first_rank_v2_pc_rank_v29&utm_term=Linux%E7%B3%BB%E7%BB%9F&spm=1018.2226.3001.4449#t7
【嵌牛鼻子】Linux系统 内核的路由转发
【嵌牛提问】什么是Linux系统内核的路由转发?
【嵌牛正文】
Linux *** 作系统嵌入了 TCP /IP协议栈,协议软件具有路由转发功能。路由转发依赖作为路由器的主机中安装多块 网卡 ,当某一块网卡接收到数据包后,系统内核会根据数据包的目的IP地址,查询 路由表 ,然后根据查询结果将数据包发送到另外一块网卡,最后通过此网卡把数据包发送出去。此主机的处理过程就是路由器完成的核心功能。 [3]
通过修改Linux系统内核参数ip_forward的方式实现路由功能,系统使用sysctl命令配置与显示在/proc/sys目录中的内核参数。首先在命令行输入:cat/proc/sys/net/ipv4/ip_forwad,检查Linux内核是不是开启IP转发功能。如果结果为1,表明路由转发功能已经开启;如果结果为0,表明没有开启。出于安全考虑,Linux内核默认是禁止数据包路由转发的。在linux系统中,有临时和永久两种方法启用转发功能。 [3]
临时启用:此种方法只对当前会话起作用,系统重启后不再启用。临时开启的命令格式:sysctl–wnet.ipv4.ip_forward=1。 [3]
永久启用:此种永久性的启用IP转发功能,通过更改配置文件/etc/sysctl.conf中的语句行“net.ipv4.ip_forward=0”,修改为“net.ipv4.ip_forward=1”,保存配置文件后执行命令sysctl–p/etc/sysctl.conf,配置便立即启用。
当服务器迁移,因为DNS未同步或某些人使用ip访问,一些流量还是会流向老的服务器。 使用iptables及其伪装特性,将所有流量转发到老的服务器。 点击看iptables的介绍 。 本文假设没有运行的iptables,至少没有针对prerouting链和postrouting链的NAT表的转发规则。1) 首先开启端口转发 # echo "1" >/proc/sys/net/ipv4/ip_forward 或sysctl net.ipv4.ip_forward=12) 增加端口转发 将端口1111上的流量转发到主机2.2.2.2 上的端口1111。# iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111然后告诉IPtables伪装起来(masquerade)# iptables -t nat -A POSTROUTING -j MASQUERADE仅仅重定向一个固定网络甚至是一台主机的流量 # iptables -t nat -A PREROUTING -s 192.168.1.1 -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111仅仅重定向一个网段的流量# iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 1111 -j DNAT --to-destination 2.2.2.2:1111 这就可以进行Linux端口转发流量了。 查看转发规则 sudo iptables -t nat -nL 1) docker bridge模式2) 安全方面,同主机上端口指定网卡ip上的流量转发 3) 端口转发到另外的服务器,见上边案例 4) snat场景 5) dnat场景,内网访问外网https://www.debuntu.org/how-to-redirecting-network-traffic-to-a-new-ip-using-iptables/vim /etc/sysctl.conf 这里是重点 配置路由转发,路由开启等都要用到。
# Controls IP packet forwarding
net.ipv4.ip_forward = 0
修改为
# Controls IP packet forwarding
net.ipv4.ip_forward = 1 允许内置路由
sysctl -p 更新
*nat
:PREROUTING ACCEPT [4174:254308]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [2811:167684]
-A PREROUTING -i eth2 -p tcp -m tcp --dport 8002 -j DNAT --to-destination 192.168.195.28:8080
-A POSTROUTING -j MASQUERADE
COMMIT
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)