iptables tidak masuk lalu lintas WAN?


1

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 eth0bukan 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, vlan2seharusnya 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

1
Bisakah Anda menambahkan output ip adan ip ro?
Sanael

Anda tidak memiliki antarmuka bernama vlan2, Anda hanya memiliki 3 antarmuka, eth0, lo dan br0. Bendera -i pada iptables hanya akan berfungsi dengan 3 itu, kecuali jika Anda membuat lebih banyak. Antarmuka publik Anda adalah eth0, seperti yang dapat Anda lihat dari informasi perutean yang Anda perbarui.
Andrew Domaszek

Sepakat. Karena itulah saya mulai dengan eth0flag -i. Namun itu tidak melakukan apa-apa. Membaca situs web dd-wrt, mereka menyebutkan beberapa kali vlan2adalah antarmuka logis WAN. Jadi saya mencobanya. Tapi sekali lagi, aturan awal saya adalah -i eth0. Saya akan memperbarui pos untuk mencerminkan hal itu.
Nathan

1
Saya akan mencoba 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 begitu tail -f -n 50 /var/log/messagesatau apa.
Sanael

1
Jadi masalahnya ada di bagian routing. Bisakah Anda memposting output iptables -t nat -L -n -vdan 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.
Sanael

Jawaban:


1

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:

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

Ya, layanan berfungsi dengan baik. Ini adalah server media Plex. Saya mengatur port manual ke depan pada router saya dan juga mengaktifkan UPnP sehingga dikonfigurasi secara otomatis. Layanan bekerja dengan baik. Sejauh aturan iptables. Saya menambahkannya melalui admin DD-WRT -> command windows dan mengklik save firewall. Satu-satunya aturan firewall ada yang diposting dalam jawaban ini. Ketika saya terhubung pada wifi LAN saya, aturan Anda log dengan sempurna. Ketika saya menonaktifkan wifi dan menggunakan layanan seluler saya. Plex masih beroperasi dengan baik, tetapi saya tidak mendapatkan logging. Mulai berpikir ini adalah kesalahan DD-WRT dan saya perlu beralih.
Nathan

Untuk alasan apa pun, beralih ke OpenWRT dari DD-WRT berhasil. Aturannya benar, hanya sesuatu dengan DD-WRT.
Nathan

0

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:

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"

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.