Имеется небольшая беспроводная локальная сеть - десктоп, ноутбук, самодельный роутер на базе старого нетбука. Везде стоит ArchLinux. Недавно появилась проблема.
Десктоп как-то странно работает с Wi-Fi сетью. На самом десктопе всё отлично - есть интернет, можно пинговать роутер и ноут и ничего подозрительного. Но стоит начать пинговать десктоп с роутера или ноутбука - пинги оказываются от 40 до 150 мс. Это слишком много для компьютеров, которые находятся на расстоянии нескольких метров друг от друга. Новых преград для сигнала не возникало.
У ноутбука таких проблем нету. Пинг ноутбука с роутера - как и положенно выдаёт 1-2 мс.
То есть с исходящими соедиенением с десектопа проблем нет, а все входящие глючат.
Если бы только это было, я бы ещё смирился, но из-за этого не работает проброс портов. Допустим, я хочу поиграть в OpenArena с другими людьми. Ставлю пробрасываю порт с ноута - всё отлично. С декстопа - ничего не работает, хотя я изменил в правиле iptables всего лишь 1 цифру в IP адресе и десктоп действительно имеет именно такой адрес.
Настройки фаервола:
# Сбрасываем настройки iptables
iptables -F
ip6tables -F
iptables -t nat -F
# Входящие пакеты по умолчанию запрещены
iptables -P INPUT DROP
ip6tables -P INPUT DROP
# Исходящие пакеты по умолчанию разрешены
iptables -P OUTPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
# Форвардинг пакетов по умолчанию разрешён
iptables -P FORWARD ACCEPT
ip6tables -P FORWARD ACCEPT
# Приём пакетов с локального интерфейса полностью разрешён
iptables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT
# Приём пакетов из локальной сети полностью разрешён
iptables -A INPUT -i br0 -j ACCEPT
ip6tables -A INPUT -i br0 -j ACCEPT
iptables -A INPUT -i wlan0 -j ACCEPT
ip6tables -A INPUT -i wlan0 -j ACCEPT
# Приём пакетов-ответов полностью разрешён
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
ip6tables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# Приём IPv6 разрешен
iptables -A INPUT -p 41 -j ACCEPT
# Входящие SSH-соединения разрешены
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
# Входящие HTTP-соединения разрешены
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
# Входящие Jabber-соединения разрешены
iptables -A INPUT -p tcp --dport 5222 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 5222 -j ACCEPT
# Входящие S2S Jabber-соединения разрешены
iptables -A INPUT -p tcp --dport 5269 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 5269 -j ACCEPT
# Входящие BOSH Jabber-соединения разрешены
iptables -A INPUT -p tcp --dport 5280 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 5280 -j ACCEPT
# Входящте OpenArena-соединения разрешены
iptables -A INPUT -p udp --dport 27960 -j ACCEPT
ip6tables -A INPUT -p udp --dport 27960 -j ACCEPT
# Входящие ICMP-пакеты разрешены
iptables -A INPUT -p icmp -j ACCEPT
ip6tables -A INPUT -p icmp -j ACCEPT
# Дополнительная настройка NAT
iptables -t filter -A FORWARD -p tcp -m tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
# Перенаправления портов
iptables -t nat -A PREROUTING -p udp -d 192.168.0.2 --dport 27960 -j DNAT --to-destination 192.168.2.2:27960
Адреса:
192.168.2.1 - роутер
192.168.2.2 - десктоп
192.168.2.3 - ноутбук
br0 - интерфейс локальной сети
wlan1 - интерфейс интернета (тут сейчас такая мешанина - сам роутер получает интернет с другого роутера, будучи вынесеным в DMZ. проблема не в этом - всё работает, если пробрасывать порт с ноута, а уж локалка не должна лагать, даже если вообще нет интернета).
Правило раздачи интернета с помощью маскарада настраиваются в другом месте.