デバッグ@ 20210222

#!/ bin / bash 

INFINCOMING = wlp4s0 
INFOUTGOING1 = enp0s25 
INFOUTGOING2 = wlp0s20u9u4u1 

echo 1> | / proc / sys / net / ipv4 / ip_forward 
echo 0> | / proc / sys / net / ipv4 / conf / all / rp_filter 

#すべてのiptablesエントリをフラッシュします
iptables -t filter -F 
iptables -t filter -X 
iptables -t nat -F 
iptables -t nat -X 
iptables -t mangle -F 
iptables -t mangle -X 
iptables -t filter -P INPUT ACCEPT 
iptables -t filter -P OUTPUT ACCEPT 
iptables -t filter -P FORWARD ACCEPT 

if ["$ 1" == "stop"]; 次に
	#iptables -t nat -A POSTROUTING -o 
	echo "iptablesが停止しました。" 
fiを
	終了します

#作業を行い、パケットをログに記録するチェーンを初期化します
iptables -t mangle -N CONNMARK1 
iptables -t mangle -A CONNMARK1 -j MARK --set-mark 1 
iptables -t mangle -A CONNMARK1 -j CONNMARK --save-mark 
iptables -t mangle -A CONNMARK1 -j LOG --log-prefix'iptables-mark1: '--log-level info 

iptables -t mangle -N CONNMARK2 
iptables -t mangle -A CONNMARK2 -j MARK --set-mark 2 
iptables -t mangle -A CONNMARK2 -j CONNMARK --save-mark 
iptables -t mangle -A CONNMARK2 -j LOG --log-prefix'iptables-mark2: '--log-level info 

iptables -t mangle -N RESTOREMARK 
iptables -t mangle -A RESTOREMARK -j CONNMARK --restore-mark 
iptables -t mangle -A RESTOREMARK -j LOG --log-prefix'restore-mark: '-ログレベルの情報

#既存の接続に属するパケットのfwmarkを復元します
iptables -t mangle -A PREROUTING -i $ {INFINCOMING} -p tcp \ 
		 -m state --state ESTABLISHED、RELATED -j RESTOREMARK 

#マークがゼロの場合は、パケットは既存の接続に属していません
iptables-t mangle -A PREROUTING -p tcp -m state --state NEW \ 
         -m statistic --mode nth --every 2 --packet 0 -j CONNMARK1 
iptables -t mangle -A PREROUTING -p tcp -m state --state NEW \ 
         -m statistic --mode nth --every 2 --packet 1 -j CONNMARK2 

iptables -t nat -N SNAT1 
iptables -t nat -A SNAT1 -j LOG --log -prefix'snat-to-10.37.1.253: '--log-level info 
iptables -t nat -A SNAT1 -j SNAT --to-source 10.37.1.253

iptables -t nat -N SNAT2 
iptables -t nat -A SNAT2 -j LOG --log-prefix'snat-to-10.37.2.253: '--log-level info 
iptables -t nat -A SNAT2 -j SNAT- to-source 10.37.2.253 

iptables -t nat -A POSTROUTING -o $ {INFOUTGOING1} -j SNAT1 
iptables -t nat -A POSTROUTING -o $ {INFOUTGOING2} -j SNAT2 

if!cat / etc / iproute2 / rt_tables | grep -q '^ 251' 
then 
	echo '251 rt_link1' >> / etc / iproute2 / rt_tables 
fi 
if!cat / etc / iproute2 / rt_tables | grep -q '^ 252' 
then 
	echo '252 rt_link2' >> / etc / iproute2 / rt_tables 
fi 

ip route flush table rt_link1 2> / dev / null 
ip route add table rt_link1 default dev $ {INFOUTGOING1}
ip route add table rt_link2 default dev $ {INFOUTGOING2} 

ip rule del from all fwmark 0x1 lookup rt_link1 2> / dev / null 
ip rule del from all fwmark 0x2 lookup rt_link2 2> / dev / null 
ip rule del from all fwmark 0x2 2> / dev / null 
ip rule del from all fwmark 0x1 2> / dev / null 
ip rule add fwmark 1 table rt_link1 
ip rule add fwmark 2 table rt_link2 

ip route flush cache

おすすめ

転載: blog.csdn.net/u013670453/article/details/113933572