Решил я для себя разобраться с таким вопросом как выход в интернет через 2 канала и соот какая-нить балансировка нагрузки. Теоретической инфы прочитал много (например Linux Advanced Routing & Traffic Control HOWTO) а с практикой пока никак. Поэтому чтобы постучаться о все подводные камни я решил сделать свой тестовый стенд (поднять виртуальную сеть при помощи VMware Server 2.0.1). С этой задачей я справился - получилась вот такая сеть:
Собственно deb_serv_03 и test_xp эмулируют локальную сеть с выходом в инет через 2 канала - на deb_serv_03 висит маскарадинг eth0 и eth1(т е как бы сеть за NAT). Все остальное эмулирует интернет (скорее сеть провайдера
1. В трафике присутствуют входящие и исходящие запросы к/от 172.16.5.2. Как такое может быть если этот адрес сидит за NAT(т е "NAT with port overload" по терминологии Cisco) и как я понимаю ситуацию вместо 172.16.5.2 должен стоять 172.16.3.1:<какой-нить порт выше 1024>. Как это получается кто-нить может объяснить?
2. При пересылке по sftp файла размером 147 Мб получаю еще более странную картину по трафику - привожу выборку из базы (sshd у меня на 2222 порту).
Код: Выделить всё
mysql> select srcaddr,dstaddr,srcport,dstport,prot,doctets/1024/1024 from deb_serv_01_dwn;
+--------------+------------+---------+---------+------+-------------------+
| srcaddr | dstaddr | srcport | dstport | prot | doctets/1024/1024 |
+--------------+------------+---------+---------+------+-------------------+
| 172.16.250.1 | 172.16.3.1 | 2222 | 1071 | 6 | 0.00011444 |
| 172.16.250.1 | 172.16.3.1 | 3 | 3 | 1 | 0.00055504 |
| 172.16.250.1 | 172.16.5.2 | 2222 | 1071 | 6 | 0.00003815 |
| 172.16.250.1 | 172.16.3.1 | 0 | 0 | 1 | 0.00051498 |
| 172.16.250.1 | 172.16.5.2 | 0 | 0 | 1 | 0.00017166 |
| 172.16.250.1 | 172.16.3.1 | 3 | 3 | 1 | 0.00055504 |
| 172.16.250.1 | 172.16.3.1 | 2222 | 1071 | 6 | 371.14932251 |
| 172.16.250.1 | 172.16.5.2 | 2222 | 1071 | 6 | 100.92908096 |
+--------------+------------+---------+---------+------+-------------------+
8 rows in set (0.00 sec)
mysql> select srcaddr,dstaddr,srcport,dstport,prot,doctets/1024/1024 from deb_serv_01_upl;
+------------+--------------+---------+---------+------+-------------------+
| srcaddr | dstaddr | srcport | dstport | prot | doctets/1024/1024 |
+------------+--------------+---------+---------+------+-------------------+
| 172.16.3.1 | 172.16.250.1 | 54516 | 53 | 17 | 0.00019741 |
| 172.16.3.1 | 172.16.250.1 | 60173 | 53 | 17 | 0.00019741 |
| 172.16.3.1 | 172.16.250.1 | 1071 | 2222 | 6 | 0.00022888 |
| 172.16.5.2 | 172.16.250.1 | 1071 | 2222 | 6 | 0.00007629 |
| 172.16.3.1 | 172.16.250.1 | 8 | 0 | 1 | 0.00051498 |
| 172.16.5.2 | 172.16.250.1 | 8 | 0 | 1 | 0.00017166 |
| 172.16.3.1 | 172.16.250.1 | 58362 | 53 | 17 | 0.00019741 |
| 172.16.3.1 | 172.16.250.1 | 59843 | 53 | 17 | 0.00019741 |
| 172.16.3.1 | 172.16.250.1 | 1071 | 2222 | 6 | 3.18178558 |
| 172.16.5.2 | 172.16.250.1 | 1071 | 2222 | 6 | 1.06321716 |
+------------+--------------+---------+---------+------+-------------------+
10 rows in set (0.00 sec)
mysql>Т е получаем что на 172.16.3.1 улетело 371мб а на 172.16.5.2 - 100мб (и благополучно дропнулось на 172.16.3.1 ибо iptables -P FORWARD DROP). Опять же если размышлять логически то должны были увидеть что 147мб прилетело на 172.16.3.1:<какой-то там порт> (а дальше в соотв с таблицей ната улетело на 172.16.5.2- но это уже видеть не должны). Кто может это прокомментировать? Может я неправильно считаю?
Маршрутизация на серверах такая:
deb-serv-00:
Код: Выделить всё
alex@deb-serv-00:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.4.0 172.16.2.2 255.255.255.0 UG 0 0 0 eth2
172.16.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
172.16.3.0 172.16.1.2 255.255.255.0 UG 0 0 0 eth1
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.250.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 172.16.250.1 0.0.0.0 UG 0 0 0 eth0deb-serv-01:
Код: Выделить всё
alex@deb-serv-01:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
0.0.0.0 172.16.1.1 0.0.0.0 UG 0 0 0 eth0
alex@deb-serv-01:~$deb-serv-03:
Код: Выделить всё
alex@deb-serv-03:~$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.16.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
172.16.2.0 172.16.4.2 255.255.255.0 UG 0 0 0 eth1
172.16.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.1.0 172.16.3.2 255.255.255.0 UG 0 0 0 eth0
0.0.0.0 172.16.3.2 0.0.0.0 UG 0 0 0 eth0
alex@deb-serv-03:~$Кроме этого на deb-serv-03 настроен iptables:
Код: Выделить всё
iptables -P FORWARD DROP
iptables -A FORWARD -s 172.16.5.0/24 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADEКонфигурацию для deb-serv-02 не привожу т к он выключен.
Всем спасибо.