LINUX.ORG.RU
ФорумAdmin

Помогите пробросить порт

 ,


1

2

Помогите пробросить порт. Хочу чтобы FTP на порт 221 пробрасывался на одну из локальных машин.

export IPT=«iptables»

export WAN=eth0

export WAN_IP=11.11.11.11

export LAN=eth1

export LAN_IP_RANGE=192.168.1.0/24

$IPT -P INPUT DROP

$IPT -P OUTPUT DROP

$IPT -P FORWARD DROP

$IPT -A INPUT -i lo -j ACCEPT

$IPT -A INPUT -i $LAN -j ACCEPT

$IPT -A OUTPUT -o lo -j ACCEPT

$IPT -A OUTPUT -o $LAN -j ACCEPT

$IPT -A OUTPUT -o $WAN -j ACCEPT

#$IPT -A INPUT -i $WAN -j ACCEPT

$IPT -A FORWARD -p tcp -m tcp -d 192.168.1.2 --dport 221 -j ACCEPT

$IPT -t nat -A PREROUTING -i $WAN -p tcp -d $WAN_IP --dport 221 -j DNAT --to-destination 192.168.1.2:21

$IPT -A FORWARD -i $LAN -o $WAN -j ACCEPT

$IPT -A FORWARD -i $WAN -o $LAN -j REJECT

$IPT -t nat -A PREROUTING -p tcp --dport 80 -i $LAN -j DNAT --to 192.168.1.1:3128

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

$IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT

$IPT -A INPUT -p tcp -m tcp --dport 221 -j ACCEPT

$IPT -A INPUT -i $WAN -p udp --dport 53 -j ACCEPT

$IPT -I INPUT -i $LAN -p udp --dport 67:68 --sport 67:68 -j ACCEPT

Если вы отправляете порт DNAT'ом в локальную сеть (цепочку FORWARD), то

$IPT -A INPUT -p tcp -m tcp --dport 221 -j ACCEPT

А вобще, у ftp же два порта (управляющий и данных), в в курсе?

P.S. Нехорошо вываливать правила в таком виде, ″-I″ в вашем скрипте может быть сколько угодно, а для читающего это не очивидный порядок правил. Уж лучше ″iptables-save″ и sed-ом заменить внешний ip-адрес.

mky ★★★★★ ()
Ответ на: комментарий от kevin2

Либо так и указать в настройках ftp-сервера использовать только этот порт, либо загрузить модуль ядра nf_conntrack_ftp с указанием параметра ″ports=221″, разрешить ″-m state RELATED″ пакеты в ″FORWARD″ iptables и загрузить модуль nf_nat_ftp.

mky ★★★★★ ()
Ответ на: комментарий от mky

ftp сервер не перенастроить, это медиацентр. Пошел учить матчасть на предмет модуля. Спасибо.

kevin2 ()
Ответ на: комментарий от kevin2

Что именно не получается? Загрузить модуль с параметром?

Что выдаёт команда (от root'а):

modprobe nf_conntrack_ftp ports=221

mky ★★★★★ ()
Ответ на: комментарий от mky
root@kevin /etc # modprobe nf_conntrack_ftp ports=221
root@kevin /etc # lsmod | grep ftp
nf_nat_ftp             12420  0
nf_conntrack_ftp       12599  1 nf_nat_ftp
nf_nat                 17863  6 nf_nat_ftp,ipt_MASQUERADE,nf_nat_ipv4,xt_nat,xt_REDIRECT,iptable_nat
nf_conntrack           73472  8 nf_nat_ftp,ipt_MASQUERADE,nf_nat,nf_nat_ipv4,xt_conntrack,nf_conntrack_ftp,iptable_nat,nf_conntrack_ipv4
kevin2 ()
Ответ на: комментарий от kevin2

Хорошо. Теперь iptables, где-нибудь в начало, до -j REJECT:

iptables -I FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

mky ★★★★★ ()

В iptables порядок правил играет роль, и беспорядочно дёргать таблицы и цепочки — это самый верный способ выстрелить себе в ногу.

ArcFi ()
Ответ на: комментарий от kevin2

Проброс data-порта влияет на передачу файлов, вывод списка файлов (содержимого каталога). И это проявляется после установки соединения.

Смотрите, проверяйте. Запустите два tcpdump на перехват пакетов на внешнем интерфейсе для 221 порта, на внутреннем для 21 и смотрите, проходят пакеты или нет. Может ваш медиацентр пытается идти в интернет другой дорогой, а не через линукс маршрутизатор с этими правилами.

mky ★★★★★ ()
Ответ на: комментарий от mky

Вот что пишет tcpdump если идти со шлюза на центр

tcpdump -i eth1 -vv src port 21
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 262144 bytes
19:01:18.529989 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 60)
    192.168.1.2.ftp > 192.168.1.1.57349: Flags [S.], cksum 0x08c4 (correct), seq 883107159, ack 1145253592, win 14480, options [mss 1460,sackOK,TS val 59936186 ecr 41960011,nop,wscale 7], length 0
19:01:18.596978 IP (tos 0x10, ttl 64, id 43234, offset 0, flags [DF], proto TCP (6), length 261)
    192.168.1.2.ftp > 192.168.1.1.57349: Flags [P.], cksum 0x4d41 (correct), seq 1:210, ack 1, win 114, options [nop,nop,TS val 59936193 ecr 41960011], length 209
19:01:18.597529 IP (tos 0x10, ttl 64, id 43235, offset 0, flags [DF], proto TCP (6), length 52)
    192.168.1.2.ftp > 192.168.1.1.57349: Flags [.], cksum 0x6ebb (correct), seq 210, ack 11, win 114, options [nop,nop,TS val 59936193 ecr 41960028], length 0
19:01:18.597780 IP (tos 0x10, ttl 64, id 43236, offset 0, flags [DF], proto TCP (6), length 88)

kevin2 ()
Ответ на: комментарий от kevin2

С какого шлюза? На котором эти правила iptables? У вас ведь правила для forward-трафика, со шлюза и так всё должно работать, они же в одной сети.

По этому фрагменту ничего не понятно, нужно дампить все пакеты между шлюзом и центром, если там есть другие активные соединение, убирать их отрицанием. И, более правильно, просто записать все пакеты в файл (если дисковая подсистема позволяет) и потом уже их посмотреть с различными фильтрами. То есть сначала запускаем ″tcpdump″ с опциями ″-s 0 -w /tmp/tcpdump″, а потом, допустим ″tcpdump -vv -r /tmp/tcpdump port 21″

mky ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.