如何做流出流量的分流
本帖最后由 鸿钧 于 2014-11-07 16:16 编辑二台linux服务器:
A服务器:公网IP:1.1.1.1 内网IP:192.168.0.1 web服务器
B服务器:公网IP:1.1.1.2 内网IP:192.168.0.2 数据库服务器
这两台服务器内网通过网线直连。
现在的情况是A服务器公网流量过高,需要分流一些流量到B服务器出去,A服务器主要应用是web服务80端口。B服务器就是安装数据库,没有装其他。
要求在不新安装其他应用,就是不改变现有软件环境的情况下,通过路由等,把访问A服务器的web流量,全部让其通过B服务器出去,要如何做呢。
我通过设置如下:
A服务器:
ip rule add fwmark 100 table 3
ip route add 0/0 via 192.168.0.2 table 3
iptables -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 100
B服务器:
/sbin/ifconfig lo:0 1.1.1.1 broadcast 1.1.1.1 netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
能够把访问A服务器80的回应包转到B服务器的内网网卡,可是B服务器不能把这个回应包再通过本机eth0应答出去,要怎样才能让包发出去呢?
在B服务器内网网卡监听到转过来的包:
# tcpdump -i eth1 -nnnv port 80
14:07:05.945826 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6098:6170(72) ack 501 win 46
14:07:05.945947 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6170:6171(1) ack 501 win 46
14:07:05.945955 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6171:6172(1) ack 501 win 46
14:07:05.945960 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6172:6173(1) ack 501 win 46
14:07:05.945965 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6173:6174(1) ack 501 win 46
14:07:05.945987 IP 1.1.1.1.80 > 113.92.239.90.14632: P 6174:6179(5) ack 501 win 46
页:
[1]