大佬教程收集整理的这篇文章主要介绍了linux – 如果NAT的输出接口关闭,则丢弃数据包的回退路由?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我建立了与标记为特定cgroup的一部分的第三方VPN和NAT数据包的连接(为了有选择地通过VPN运行进程)到第三方的VPN tun设备(本例中为tun2)并使用路由 – up脚本将默认网关设置为名为“vpn”的单独路由表的VPN.这一切都适用于以下(省略一些小细节).
在启动时运行:
iptables -t mangle -A OUTPUT -m cgroup --cgroup 0x00110011 -j MARK --set-mark 11 iptables -t nat -A POSTROUTING -m cgroup --cgroup 0x00110011 -o tun2 -j MASQUERADE ip rule add fwmark 11 table vpn
包含在openvpn client.conf中:
route-noexec route-up /etc/openvpn/3rdparty/routeup.sh
和routeup.sh一起设置路由表vpn的默认网关
#!/bin/bash /sbin/ip route replace default via $route_vpn_gateway dev $dev table vpn
问题:
如果第三方VPN的接口(tun2)出现故障(例如openvpn崩溃),路由表’vpn’中不再有默认路由,并且所有流量(甚至是在我的单独cgroup中运行的流量)都会通过主路由表并通过默认的eth0接口.所以我需要在iptables或单独的’vpn’路由表中设置一个回退路由.如果我使用类似的东西,
iptables -A OUTPUT -m cgroup --cgroup 0x00110011 -o eth0 -j REJECT
它只是最终丢弃所有数据包,所以很明显这是在nat条目之前处理的.同样,我找不到使用’ip route’来改变’vpn’的路由表的方法,这样一旦在tun2接口丢弃后删除了默认网关条目,它就会阻止所有流量.相反,没有任何条目,并且看起来所有流量都会转到下一个路由表,该路由表必须是主要的.
以上是大佬教程为你收集整理的linux – 如果NAT的输出接口关闭,则丢弃数据包的回退路由?全部内容,希望文章能够帮你解决linux – 如果NAT的输出接口关闭,则丢弃数据包的回退路由?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。