Blokir semua lalu lintas non-VPN pada DD-WRT

0

Saya memiliki router dengan DD-WRT diinstal. Baru saja Open VPN dikonfigurasi di dalamnya. Bagus sekali.

Saya sekarang ingin membuatnya sehingga jika terowongan VPN turun semua lalu lintas diblokir, tidak ada selain koneksi VPN itu sendiri yang harus langsung pergi ke ISP. Artinya, router hanya memungkinkan komunikasi melalui VPN.

Membaca di beberapa blog saya sampai di baris kode ini:

iptables -I FORWARD -i br0 -o eth1 -j DROP 

Yang telah saya tambahkan ke startup dan Firewall. Tapi sepertinya itu tidak berhasil. Saya telah menonaktifkan VPN dan masih menulis pertanyaan ini.

Inilah yang saya miliki saat ini. Yang setelah beberapa reebots tidak melakukan apa-apa enter image description here

Jika itu penting, itu adalah router Asus RT-N16 yang menjalankan firmware: DD-WRT v24-sp2 (12/20/11) mega

Jembatan saat ini (lebih banyak jika itu membantu info). enter image description here

EDIT: Saya berhasil menggunakan perintah firewall berikut:

iptables -I FORWARD -i br0 -o tun0 -j ACCEPT
iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
iptables -I FORWARD -i br0 -o vlan2 -j DROP
iptables -I INPUT -i tun0 -j REJECT
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

Menulis artikel yang merinci cara menggunakannya dalam DD-WRT dengan OpenVPN untuk memblokir semua lalu lintas non-VPN di sini: http://syntaxwarriors.com/p/1019/How-to-use-DD-WRT-to-connect-to-a-VPN-and-block-all-non-VPN-traffic

JensB
sumber

Jawaban:

1

Apakah Anda memiliki OpenVPN sebagai titik akhir pada wrt? Aturan FORWARD tidak akan memengaruhi lalu lintas yang berasal dari Asus itu sendiri, hanya lalu lintas yang dikirim pada / melalui antarmuka berbeda tempat Asus perlu melakukan rute. Diagram Netfilter ini dapat membantu

Contoh (di workstation Linux Anda): tambahkan logger untuk port 80 keluar antarmuka WAN Anda (mungkin eth0 pada Anda, saya jalankan a br0 jembatan untuk virtualisasi):

# iptables -I FORWARD -o br0 -p tcp --dport 80 -j LOG --log-prefix="FWD: "

Sekarang terhubung ke server yang menggunakan port 80

# wget -q www.google.com -O /tmp/out.htm

Periksa MENERUSKAN rantai:

# iptables -nvL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 LOG        tcp  --  *      br0     0.0.0.0/0            0.0.0.0/0            tcp dpt:80 LOG flags 0 level 4 prefix "FWD: "

Tidak ada.. dmesg juga tenang:

# dmesg | grep FWD:

Tidak ada yang muncul .. jadi sekarang coba rantai OUTPUT sebagai gantinya:

# iptables -I OUTPUT -o br0 -p tcp --dport 80 -j LOG --log-prefix="OUT: "

Setelah Anda mengulangi wget, sekarang Anda akan melihat ini:

    # dmesg | grep OUT
...
    [427898.519765] OUT: IN= OUT=br0 SRC=192.168.1.6 DST=72.21.91.29 LEN=52 TOS=0x00 PREC=0x00 TTL=64 ID=62284 DF PROTO=TCP SPT=58982 DPT=80 WINDOW=242 RES=0x00 ACK URGP=0 

Menjatuhkan keluar TCP semuanya sekarang menjadi aturan sederhana yang bisa terlihat seperti ini. Anda juga bisa meninggalkan -p tcp untuk memblokir lalu lintas IP apa pun, ini hanyalah contoh:

# iptables -I OUTPUT -o br0 -p tcp -j REJECT --reject-with icmp-host-prohibited

# wget www.google.com -O /tmp/foo
converted 'http://www.google.com' (ANSI_X3.4-1968) -> 'http://www.google.com' (UTF-8)
--2017-02-14 12:38:00--  http://www.google.com/
Resolving www.google.com (www.google.com)... 216.58.192.132, 2607:f8b0:4009:80c::2004
Connecting to www.google.com (www.google.com)|216.58.192.132|:80... failed: No route to host.
Connecting to www.google.com (www.google.com)|2607:f8b0:4009:80c::2004|:80... failed: Address family not supported by protocol.
Server Fault
sumber