#!/bin/shIPT="iptables"# Интерфейс который смотрит в интернетWAN_IFACE=ppp0# Интерфейс локальной сетьLAN_IFACE=enp2s0# Адрес локалкиLAN=192.168.1.1/24# Удаление всех правил из таблиц$IPT -t filter -F$IPT -t nat -F$IPT -t raw -F$IPT -t mangle -F#Удаление всех пользовательских цепочек из таблиц$IPT -t filter -X$IPT -t nat -X$IPT -t raw -X$IPT -t mangle -X$IPT -I INPUT -p tcp -m tcp --dport 21 -j ACCEPT # ftp-сервер$IPT -I INPUT -p tcp -m tcp --dport 20 -j ACCEPT # ftp-data для активного режима$IPT -I OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT$IPT -I OUTPUT -p tcp -m tcp --dport 20 -j ACCEPT# В качестве политики по умолчанию - отброс всех пакетов.# Иными словами, если пакет из указанных таблиц не затронуло ни одно из нижеперечисленных правил, к нему будет применено действие DROP.$IPT -P INPUT DROP$IPT -P FORWARD DROP# Разрешим устройствам из внешки пинговать роутер$IPT -A INPUT -i $WAN_IFACE -p icmp --icmp-type echo-request -j ACCEPT# Также разрешим доступ из внешки к роутеру, но разрешим её только пакетам в установленных(ESTABLISHED) и дочерних(RELATED) соединениях.# Иными словами, пробрасываются только те пакеты, инициаторами соединений которых выступили мы сами. Пакеты соединений со статусом NEW(статус установки соединения) и другими статусами отбрасываются.$IPT -A INPUT -i $WAN_IFACE -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT# остальные запросы из внешки - накуй$IPT -A INPUT -i $WAN_IFACE -j REJECT# Разрешим обращение к роутеру от локального интерфейса(localhost) и от устройств из локальной сети$IPT -A INPUT -i lo -j ACCEPT$IPT -A INPUT -i $LAN_IFACE -j ACCEPT#Разрешим доступ с интерфейса eth0 на случай, если понадобится опять подключаться через него$IPT -A INPUT -i enp1s0 -j ACCEPT#Разрешить устройствам в сети общаться между собой$IPT -A FORWARD -i $LAN_IFACE -o $LAN_IFACE -j ACCEPT# Ниже три правила для обеспечения доступа устройств из локалки в интернет и обратно.# Разрешим устройствам из локалки обрашаться во внешку$IPT -A FORWARD -s $LAN -o $WAN_IFACE -j ACCEPT# Разрешим и обратную связь - из внешки к устройствам в локалке, по аналогии с похожим правилом в цепочке INPUT.$IPT -A FORWARD -d $LAN -m conntrack --ctstate ESTABLISHED,RELATED -i $WAN_IFACE -j ACCEPT# Для всех пакетов из локальной сети во внешку делаем Маскарадинг - подмену адреса источника пакета внешним адресом роутера.$IPT -t nat -A POSTROUTING -s $LAN -o $WAN_IFACE -j MASQUERADE# Также для доступа устройств из локалки в интернет потребуется включить проброс пакетов.echo '1' > /proc/sys/net/ipv4/ip_forward$IPT -I INPUT -p tcp -m tcp --dport 22 -j ACCEPT# Вклюим MTU clamping. Это правило было внесено в таблицу mangle утилитой pppoeconf - оставляем как есть.$IPT -A FORWARD -t mangle -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:65495 -j TCPMSS --clamp-mss-to-pmtu### Transmission ###$IPT -I INPUT -p tcp -m tcp --dport 51413 -j ACCEPT$IPT -I INPUT -p udp -m udp --dport 51413 -j ACCEPT$IPT -A OUTPUT -p udp --dport 51413 -j ACCEPT$IPT -A OUTPUT -p tcp --dport 51413 -j ACCEPT$IPT -A INPUT -p tcp --dport 9091 -s 192.168.1.1/24 -j ACCEPT # transmission rpc - only local network# ftp#$IPT -I INPUT -p tcp -m tcp --dport 21 -j ACCEPT # ftp-сервер#$IPT -I INPUT -p tcp -m tcp --dport 20 -j ACCEPT # ftp-data для активного режима#$IPT -I OUTPUT -p tcp -m tcp --dport 21 -j ACCEPT#$IPT -I OUTPUT -p tcp -m tcp --dport 20 -j ACCEPTexit 0
Ок, ви не за NAT-ом. Тоді це проблема з провайдером, який може використовувати NAT.
Тобто залишається два варіанти: IPv6 (без NAT) і sftp по ssh (не плутати з ftps).
eth0 - зовнішній інтерфейс999.999.999.999 - IP-адреса зовнішнього інтерфейсуКод: Bashiptables -t filter -A INPUT -i eth0 -p tcp --dport 21 -j ACCEPTiptables -t raw -A PREROUTING -i eth0 -d 999.999.999.999 -p tcp --dport 21 -j CT --helper ftp