nixp.ru v3.0

20 января 2017,
пятница,
06:42:35 MSK

DevOps с компанией «Флант»
Аватар пользователя DimkaS
DimkaS написал 17 апреля 2008 года в 14:40 (510 просмотров) Ведет себя как мужчина; открыл 84 темы в форуме, оставил 922 комментария на сайте.

Есть gprs router, за которым стоит машина с ftp. Нужно получить доступ из вне.

делаю:

# iptables -t nat -A PREROUTING -p tcp -i ppp0 --dport 2121 -j DNAT --to-destination 192.168.1.10:21
# iptables -A FORWARD -i ppp0 -p tcp --dport 21 -j ACCEPT

результат:

# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination        
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination        
ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:ftp
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
# iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination        
DNAT       tcp  --  anywhere             anywhere            tcp dpt:2121 to:192.168.1.10:21
Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination        
MASQUERADE !esp  --  anywhere             anywhere            
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination        
#

пробую:

$ telnet xxxxx 2121
Trying xxxxx...
telnet: Unable to connect to remote host: Connection timed out

маскарадинг исходящих соединений на роутере сделан так:

# iptables -t nat -A POSTROUTING -p ! esp -o ppp0 -j MASQUERADE

PS: на машине с ftp два интерфейса и тот, к которому подключен роутер — не дефолтный. Роутер доступен из инета, роутер видит инет, роутер видит машину с ftp и может установить ftp соединение с ней.

Dr. Evil

1) Если в цепочке стоит полиси ACCEPT, то остальные правила не обрабатываются, на сколько я помню.

2) Если на машине с ftp-сервером в качестве шлюза по умолчанию указан другой гейт, то ты в пролёте. тебе надо надо менять это правило, сделав гейтом по умолчанию шлюз с iptables, или тогда для каждой машины, которой необходимо получить доступ по ftp, писать отдельное правило в таблице.

DimkaS
Dr. Evil
2) Если на машине с ftp-сервером в качестве шлюза по умолчанию указан другой гейт, то ты в пролёте. тебе надо надо менять это правило, сделав гейтом по умолчанию шлюз с iptables, или тогда для каждой машины, которой необходимо получить доступ по ftp, писать отдельное правило в таблице.

Ааа, понял. Т.е. мне имеет смысл SNAT добавить, чтоб ответ шёл тем же путём?

Dr. Evil

MASQUERADE должно хватить. Хотя я предпочитаю SNAT.

Но одного SNAT не хватит. Ты не забывай про route.

DimkaS

Намано, если делать SNAT, то ответ уходит к роутеру.

Можно не делать, но тогда надо defaultroute на роутер настроить.

В общем, спасибо, разобрался :)

ecobeingecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.