The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"nat под нагрузкой  не заменяет адреса"
Отправлено Romk, 28-Мрт-14 11:40 
~ # uname -a
Linux server 2.6.32-26-pve #1 SMP Mon Oct 14 08:22:20 CEST 2013 x86_64 GNU/Linux

> как организована сеть для виртуалки?

два интерфейса в виртуалке один  192.168.0.10 на  vmbr2   через гейт 192.168.0.1
другой  192.168.1.<какойто> на  vmbr1:0     для внутренней сети

вот сеть на хосте
# cat /etc/network/interfaces  

auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
  address   ______________
  broadcast 148.251.0.127
  netmask   255.255.255.224
  gateway   ______________
  # default route to access subnet
  up route add -net ________ netmask 255.255.255.224 gw ___________ eth0

iface eth0 inet6 static
  address ______________::2
  netmask 64
  gateway fe80::1

auto  vmbr1
iface vmbr1 inet static
  address   10.0.0.3
  broadcast 10.0.0.255
  netmask   255.255.255.0

  bridge_ports eth1
  bridge_stp off
  bridge_fd 0

auto  vmbr1:0
iface vmbr1:0 inet static
  address   192.168.1.3
  broadcast 192.168.0.255
  netmask   255.255.255.0

auto  vmbr2
iface vmbr2 inet static
  address   192.168.0.1
  broadcast 192.168.0.255
  netmask   255.255.255.0

  bridge_ports none
  bridge_stp off
  bridge_fd 0

  post-up /root/firewall.sh

<<EOF

# vmbr1 внутреняя сеть   зацеплена на eth1
# vmbr2  сеть  192.168.0.0/24   никуда зацеплена. должна использоваться только для через NAT

вот скрипт который настраивает сеть

cat /root/firewall.sh  :


#!/bin/bash
FAILOVERIP=________
EXTERNALIP=`/sbin/ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}'`

sysctl -w net.netfilter.nf_conntrack_max=196608
echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp
echo 1 > /proc/sys/net/ipv4/ip_forward
echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

iptables -F INPUT
iptables -F FORWARD
iptables -F OUTPUT
iptables -F -t nat

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT


iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A FORWARD -i vmbr1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o vmbr1 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i vmbr2 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o vmbr2 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m addrtype --dst-type MULTICAST -j ACCEPT
iptables -A INPUT -m pkttype --pkt-type multicast -j ACCEPT

iptables -A FORWARD -m conntrack --ctstate DNAT -j ACCEPT


#pings
iptables -A INPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -m state --state ESTABLISHED,RELATED -j ACCEPT


iptables -A INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -s 192.168.1.1/24 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/24 -j ACCEPT

iptables -A INPUT -i lo -j ACCEPT

#allow internet access for subnet
iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o eth0 -j MASQUERADE

#port forwarding
iptables -t nat -A PREROUTING -p tcp  --dst $EXTERNALIP  --dport 80 -j DNAT --to-destination 192.168.0.10:80

iptables -t nat -A PREROUTING -p tcp  --dst $EXTERNALIP  --dport 8889 -j DNAT --to-destination 192.168.0.10:8889


#allow forward to routing failover ip
route add $FAILOVERIP gw 192.168.0.200
iptables -A FORWARD -i eth0 -p tcp -d $FAILOVERIP -j ACCEPT
iptables -A FORWARD -i eth0 -p icmp -d $FAILOVERIP -j ACCEPT

#open ports
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
iptables -A INPUT -p tcp --dport 5900 -j ACCEPT


<<EOF

причем получается так что не заменяются  адреса  не только тех пакетов что через NDAT идут , но и тех которые идут через маскарадинг (но их просто на порядки меньше  поэтому они могут даже не встретиться , но замечены были)  из других виртуалок.  В любом случае на общем фоне пакетов  таких неправильных сотые доли процента.. но это не дело.


> что будет если 192.168.0.10 попытается обратится на 80 порт на $EXTERNALIP

ничего не будет , он по своей воле туда никогда не обратится, если нужно будет допишем правил.

> если 192.168.0.10 не за eth0, то это правило при пробросе работать не
> будет, обратное преобразование будет в DNAT автоматом

все должно стать понятным из конфигов выше


>> ---

сейчас на другом сервере с таким же конфигом   я  убрал правило (DNAT на 80 порт остался рабочим  но  левые пакеты рубятся политикой поумолчанию DROP)
#iptables -A FORWARD -i vmbr2 -o eth0 -j ACCEPT

и разрешил только жизненонеобходимым ходить в сеть  
iptables -A FORWARD -s 192.168.0.200 -i vmbr2 -o eth0 -j ACCEPT  ( маскарадинг на всякий случай заменил на  SNAT --to-source $EXTERNALIP ,  вот здесь tcpdump и показал   очень  редкие  пакеты  с адресом 192.168.0.200   выходящими из eth0,   что говорит о том что и DNAT и SNAT   имеют одну и туже проблему сейчас)

 

Ваше сообщение
Имя*:
EMail:
Для отправки новых сообщений в текущей нити на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру