LinuxForum.Fans
Тема

[РЕШЕНО]Подскажите: почему не идет FORWARD для определенных портов?

Автор: SLS 10 сообщений 4549 просмотров
#17400

Хочу открыть в локальной сети порт 110, 587.
Правила для iptables:
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# iptables -P FORWARD DROP
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# iptables -A FORWARD -p tcp --dport 110 -i eth1 -j ACCEPT
# iptables -A FORWARD -p tcp --dport 587 -i eth1 -j ACCEPT

где eth1 - сетевая плата для LAN, eth0 - WAN, ppp0 - соединение к интернет.

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

text
#cat /proc/sys/net/ipv4/ip_forward
1
#17403

попробуй вместо FORWARD написать INPUT

PS: А сами сервера где находятся? НА этом сервере или в интернете?

#17417
SLS написал:
Хочу открыть в локальной сети порт 110, 587.
Правила для iptables:
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# iptables -P FORWARD DROP
# iptables -A FORWARD -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
# iptables -A FORWARD -p tcp --dport 110 -i eth1 -j ACCEPT
# iptables -A FORWARD -p tcp --dport 587 -i eth1 -j ACCEPT

где eth1 - сетевая плата для LAN, eth0 - WAN, ppp0 - соединение к интернет.

В локальной сети почтовые программы пишут, что невозможно соединиться с сервером.
text
#cat /proc/sys/net/ipv4/ip_forward
1

1. Включен ли форвардинг пакетов? Если не уверен, то сделай:
echo 1 > /proc/sys/net/ipv4/ip_forward
2. Разбирает ли хост, на котором написаны эти правила, маршрутизацию? То есть, он точно кладет проходящие пакеты в ppp0? Или отправляет их с eth0 (WAN)?
И если здесь всё будет правильно, то работать должно. А если где промахивается, то и результат будет соответствующий.

#17435
Loky написал:
попробуй вместо FORWARD написать INPUT

Не помогло.

Loky написал:
А сами сервера где находятся? НА этом сервере или в интернете?
Сервера внешние- интернет.

Cruiser78 написал:
1. Включен ли форвардинг пакетов? Если не уверен, то сделай:
echo 1 > /proc/sys/net/ipv4/ip_forward
Сделано в самом начале.

Cruiser78 написал:
Разбирает ли хост, на котором написаны эти правила, маршрутизацию? То есть, он точно кладет проходящие пакеты в ppp0? Или отправляет их с eth0 (WAN)?
Не понял вопроса :(
#17439

Если можно напишите сюда вывод команды ip route.

#17447
SLS написал:
Не понял вопроса :(

Очень просто. У тебя на сервере ТРИ сетевых интерфейса. eth0 (WAN), eth1(LAN) и ppp0 (опять же WAN, то есть интернет). И представь, что все пакеты в интернет идут не на интерфейс ppp0, а на eth0? А мескарадинг ты поднял на ppp0. И что будет происходить в этом случае? Будет ли маскарадится eth0?

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

#17450
text
# ip route
192.168.11.1 dev ppp0  proto kernel  scope link  src 10.2.4.91
192.168.0.0/24 dev eth1  proto kernel  scope link  src 192.168.0.1
200.200.102.0/24 dev eth0  proto kernel  scope link  src 200.200.102.126
127.0.0.0/8 dev lo  scope link
default via 192.168.11.1 dev ppp0
Cruiser78 написал:
А мескарадинг ты поднял на ppp0. И что будет происходить в этом случае? Будет ли маскарадится eth0?

Я правильно понял: Нужно делать так:
iptables -t nat -A POSTROUTING -i eth1 -j MASQUERADE ?

#17461
SLS написал:

Я правильно понял: Нужно делать так:
iptables -t nat -A POSTROUTING -i eth1 -j MASQUERADE ?

Если построутинг, то почему ключ i?
У меня всего два интерфейса (выход в инет идет дальше, через отдельный роутер с кабель-модемом), то есть никакого ppp0 не поднимаю за ненадобностью, и работает следующая строка:

$IPT -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE

а вот что ты подставишь вместо $EXT_IF - это уже твое конкретное дело.

#17467

В цепочке POSTROUTING нельзя использовать флаг -i. По крайней мере у меня iptables ругается на него.

text
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -i eth1 -j ACCEPT
iptables -A FORWARD -p tcp --dport 587 -i eth1 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Можно в таком порядке попробовать =). Это для выхода в интернет.

И..

text

iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 587 -i eth1 -j ACCEPT

Если порты открываются на самом сервере.

Еще рекомендую с помощью утилиты tcpdump понаблюдать за тем как ходит трафик через ваш шлюз. Возможно это натолкнет на какие-нибудь мысли.

#17528

Спасибо, получилось!

Войдите или зарегистрируйтесь, чтобы ответить.