Задать вопрос
danielnewman
@danielnewman
Front-end

Как настроить iptables, что бы из локальной в глобальную ходить?

Имеется один паблик IP и сеть из виртуальных машин на Debian

# network interface settings
auto lo
iface lo inet loopback

# device: eth0
auto  eth0
iface eth0 inet static
    address   175.219.59.209
    gateway   175.219.59.193
    netmask   255.255.255.224
    post-up echo 1 > /proc/sys/net/ipv4/conf/eth0/proxy_arp

А вот — моя сеть в двух вариантах настройки:
auto vmbr0
iface vmbr0 inet static
    address   10.10.0.1
    netmask   255.255.0.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up ip route add 10.10.0.1/24 dev vmbr0

Тут я могу себе позволить ходить в Интернет, обновлять пакеты и прочие радости грешной жизни,
но в упор не вижу своих соседей по сети 10.10.11.0/24 (все запросы уходят в интернет)

А вот в этом варианте я могу замечательно общаться с соседними машинами 10.10.11.0/24, но никакого
интернета:
auto vmbr1
iface vmbr1 inet static
    address   10.10.0.1
    netmask   255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING  -s '10.10.0.0/24' -o vmbr1 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.10.0.0/24' -o vmbr1 -j MASQUERADE

Вот правило, придуманное где-то между 5 и 6 часами ночи/утра:
iptables -t nat -A POSTROUTING ! -d '10.10.11.0/24' -j SNAT --to-source '175.219.59.209'

Оно описывает мой внутренний порыв отсылать все пакеты с адресами вне сети 10.10.11.0/24 через NAT на eth0.

А как правильно это сделать?
  • Вопрос задан
  • 3376 просмотров
Подписаться 11 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@Ruma7a
А что у вас там за виртуалка? Гипервизор какой-то?

Это конфигурация адаптера на шлюзе? То, что вы хотели сделать в последнем правиле правильно делается:

* включении NAT на хосте:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

где eth0 — сетевуха, смотрящая в инет

* включением форвардинга на хосте

sysctl -p net.ipv4.ip_forward="1" 


* указанием шлюза (gateway) в конфигурации сетевого адаптера клиента:

auto  eth0
iface eth0 inet static
    address   10.10.0.2
    gateway   10.10.0.1
    netmask   255.255.255.0
Ответ написан
Все исходящие пакеты с интерфейса eth0:
$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 175.219.59.209
Не забудьте:
Если MTU интерфейсов не совпадает:
$IPTABLES -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы