Biarkan saya mulai dengan menyatakan tujuan akhir saya: Ketika lalu lintas masuk pada alamat IP tertentu, jika server tidak aktif, nyalakan dengan Wake On Lan. Saya menggunakan router TP-Link Archer C7 v2 dengan DD-WRT diinstal dengan build r30709.
- WOL bekerja
- Mencatat lalu lintas LAN di port berfungsi (melalui aturan iptables)
- Server ping dari skrip untuk melihat apakah aktif setelah penguraian untuk entri entri log kustom berfungsi
- mengirim karya WOL dari skrip
- Logging lalu lintas WAN TIDAK berfungsi (melalui aturan iptables)
Sekarang dari apa yang saya lihat tentang DD-WRT adalah banyak orang tampaknya membuat VLAN ketika mereka melakukan sesuatu seperti itu. Perute saya berbasis Atheros, dan DD-WRT seharusnya tidak mendukung VLAN untuk perute Atheros walaupun banyak orang sepertinya telah membuatnya bekerja pada router ini (mereka tidak memposting instruksi online).
Jadi saya sedang mencari cara untuk mengatur port pada router server terhubung ke VLAN sendiri, tetapi sejauh ini tidak berhasil.
Berikut adalah dua aturan iptables saya:
#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 "
Apakah ini sesuatu yang dapat diperbaiki hanya dengan iptables? Karena saya tidak bisa mendapatkan iptables untuk mencatat koneksi WAN yang masuk pada port itu ke / var / log / messages. Saya berasumsi itu tidak menulis ke log karena tidak duduk di VLAN sendiri.
Perbarui 1
Harap dicatat, saya mencoba menggunakan eth0
bukan vlan2
, tetapi hasil yang sama: nada di log. Saya bahkan menghapus -i <interface>
semua bersama dalam kedua aturan, tetapi tidak pernah apa pun pada lalu lintas 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
Menurut situs web DD-WRT, vlan2
seharusnya mewakili antarmuka logis untuk WAN.
Perbarui 2
Saya perhatikan IP tujuan salah. Harus pergi ke 192.168.1.2 tetapi akan pergi ke 192.168.0.10. Itu sama sekali bukan LAN yang valid:
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
Mencoba ini sebagai satu-satunya aturan per saran di bawah ini:
iptables -A FORWARD -p tcp --dport 32400 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"
Masih tidak ada dalam log; berhenti mencatat koneksi LAN juga.
Perbarui 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
ip a
danip ro
?eth0
flag -i. Namun itu tidak melakukan apa-apa. Membaca situs web dd-wrt, mereka menyebutkan beberapa kalivlan2
adalah antarmuka logis WAN. Jadi saya mencobanya. Tapi sekali lagi, aturan awal saya adalah-i eth0
. Saya akan memperbarui pos untuk mencerminkan hal itu.iptables - A FORWARD -p tcp --dport 32000 -m limit --limit 50/min -j LOG --log-prefix "CHECK INTERFACES"
untuk melihat antarmuka mana yang digunakan sebagai WAN. Anda tidak perlu status baru untuk mendiagnosis. Kalau begitutail -f -n 50 /var/log/messages
atau apa.iptables -t nat -L -n -v
dan memverifikasi bahwa klien tidak mengirim paket ke ip yang salah? Meskipun jika tujuannya adalah dalam subnet 192.168.1.0/24, lalu lintas tidak akan melalui eth0 tetapi melalui br0.Jawaban:
Saya tidak bisa menambahkan komentar pada pengguna super, jadi ini adalah jawabannya. Bisakah Anda mengonfirmasi bahwa layanan ini berfungsi, apa pun yang Anda akses dari LAN atau WAN?
Apakah Anda menggunakan skrip iptables, atau hanya menjalankan perintah di bash secara terpisah? Jika Anda tidak memiliki skrip iptables, seperti kata Cybernard, Anda harus memastikan garis LOG Anda sebelum ACCEPT.
Setelah sebuah paket DITERIMA atau DIHENTING, ia meninggalkan rantai, jadi tidak akan pernah cocok dengan aturan log yang terletak kemudian di rantai.
Misalnya, untuk memasukkan aturan LOG Anda sebagai yang pertama di rantai FORWARD:
sumber
harap dicatat bahwa ip pada antarmuka WAN akan menjadi pra nat sehingga router mungkin menjadi target bahkan jika paket diteruskan. inilah yang akan saya lakukan:
di mana antarmuka dengan IP lemah. biasanya saya hanya drop lalu lintas lalu mengizinkan apa yang saya inginkan, jadi sebenarnya saya tidak akan melakukan ini.
sumber