1

Позвольте мне начать с констатации моей конечной цели: когда трафик поступает на определенный IP-адрес, если сервер не включен, включите его с помощью Wake On Lan. Я использую маршрутизатор TP-Link Archer C7 v2 с установленным DD-WRT со сборкой r30709.

  • WOL работает
  • Регистрация трафика локальной сети через порт работает (через правило iptables)
  • Pinging сервер из скрипта, чтобы увидеть, работает ли после разбора для пользовательской записи журнала работает
  • отправка WOL работает из скрипта
  • Регистрация трафика WAN НЕ работает (с помощью правила iptables)

Теперь из того, что я видел в DD-WRT, многие люди, кажется, создают VLAN, когда делают что-то подобное. Мой маршрутизатор основан на Atheros, и DD-WRT предположительно не поддерживает VLAN для маршрутизаторов Atheros, хотя многие люди, похоже, работают на этом маршрутизаторе (они не публикуют инструкции онлайн).

Поэтому в настоящее время я изучаю способ настройки порта на маршрутизаторе, к которому подключен сервер, в своей собственной VLAN, но пока что не повезло.

Вот мои два правила iptables:

#this works
iptables -I FORWARD -i br0 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX LAN Connection "

# this does not work 
iptables -I FORWARD -i eth0 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX WAN Connection "

# this does not work either (dd-wrt.com says vlan2 is the WAN interface)
iptables -I FORWARD -i vlan2 -p tcp --dport 32400 -m state --state NEW -j LOG --log-prefix "PLEX WAN Connection "

Это можно исправить с помощью iptables? Потому что я не могу получить iptables для записи входящих WAN-соединений через этот порт в /var /log /messages. Я предположил, что он не записывает в журнал, потому что он не сидит в собственной VLAN.

Обновление 1

Пожалуйста, обратите внимание, я попытался использовать eth0 вместо vlan2 , но результат тот же: nada в журнале. Я даже удалил -i <interface> все вместе в обоих правилах, но никогда ничего в WAN-трафике.

root@DD-WRT:~# ip a
root@DD-WRT:~# ip ro
default via pu.bl.ic.1 dev eth0
pu.bl.ic.0/24 dev eth0  proto kernel  scope link  src pu.bl.ic.ip
127.0.0.0/8 dev lo  scope link
169.254.0.0/16 dev br0  proto kernel  scope link  src 169.254.255.1
192.168.1.0/24 dev br0  proto kernel  scope link  src 192.168.1.1

Согласно веб-сайту DD-WRT, предполагается, что vlan2 представляет собой логический интерфейс для глобальной сети.

Обновление 2

Я заметил, что IP-адрес назначения неверен. Должен идти к 192.168.1.2, но он идет к 192.168.0.10. Это не является действительной локальной сетью вообще:

Oct  4 20:47:35 DD-WRT kern.warn kernel: [114429.460000] PLEX LAN Connection IN=br0 OUT=eth0 MAC=XXXXXXXXXXXXXXXXXXX SRC=192.168.1.133 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=45163 DF PROTO=TCP SPT=4644

Попробовал это как единственное правило согласно предложению ниже:

iptables -A FORWARD -p tcp --dport 32400 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"

Все еще ничего в журнале; перестал регистрировать подключения к локальной сети тоже.

Обновление 3

root@DD-WRT:/tmp/var/log# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 2742 packets, 395K bytes)
 pkts bytes target     prot opt in     out     source               destination
   13   764 DNAT       tcp  --  *      *       0.0.0.0/0            pu.bl.ic.ip       tcp dpt:14619 to:192.168.1.2:32400
    0     0 DNAT       icmp --  *      *       0.0.0.0/0            pu.bl.ic.ip       to:192.168.1.1
    4   232 DNAT       tcp  --  *      *       0.0.0.0/0            pu.bl.ic.ip       tcp dpt:22709 to:192.168.1.2:32400
  220 19942 TRIGGER    0    --  *      *       0.0.0.0/0            pu.bl.ic.ip       TRIGGER type:dnat match:0 relate:0

Chain INPUT (policy ACCEPT 30145 packets, 2802K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 253 packets, 21491 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 260 packets, 21863 bytes)
 pkts bytes target     prot opt in     out     source               destination
 1065 67674 SNAT       0    --  *      eth0    192.168.1.0/24       0.0.0.0/0           to:pu.bl.ic.ip
   10   624 MASQUERADE  0    --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x80000000/0x80000000

2 ответа2

1

Я не могу добавить комментарий к суперпользователю, так что это ответ. Можете ли вы подтвердить, что служба работает, независимо от того, какой доступ к ней вы получаете из локальной или глобальной сети?

Используете ли вы сценарий iptables, или вы просто выполняете свою команду в bash отдельно? Если у вас нет скрипта iptables, как сказал Кибернард, вы должны убедиться, что ваша строка LOG находится перед строкой ACCEPT.

Как только пакет ПРИНЯТ или DROPped, он покидает цепочку, поэтому никогда не будет соответствовать правилу журнала, расположенному позже в цепочке.

Например, чтобы вставить правило LOG в качестве первого в цепочке FORWARD:

iptables -I FORWARD 1 -p tcp --dport 32400 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"
0

обратите внимание, что ip на интерфейсе WAN будет предварительно настроен, поэтому маршрутизатор может быть целью, даже если пакет пересылается. вот что я хотел бы сделать:

iptables -I INPUT -p any -i <wan interface> -j LOG --log-prefix "FIREWALL-WAN"
iptables -I FORWARD -p any -i <wan interface> -j LOG --log-prefix "FIREWALL-WAN"

где интерфейс с ненастоящим ip. обычно я просто выбрасываю wan trafic, а затем разрешаю то, что хочу, так что на самом деле я бы этого не делал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .