Penerusan IP dari satu antarmuka ke antarmuka lainnya di Debian 7

3

Latar Belakang

Debian 7 yang saya jalankan memiliki antarmuka berikut

wlan3 == Internet connection  85.5.48.64/24
wlan2 == act as an AP (hostapd) 192.168.5.1/24

Saya menjalankan pengaturan berikut di terminal

sudo iptables -t nat -A POSTROUTING -o wlan3 -j MASQUERADE
sudo iptables -A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan2 -o wlan3 -j ACCEPT

Masalah

Tetapi, wlan2antarmuka tidak dapat mengakses Internet.

root@arm:/etc# ping -I wlan2 google.com
PING google.com (173.194.34.78) from 192.168.5.1 wlan2: 56(84) bytes of data.
From 192.168.5.1 icmp_seq=1 Destination Host Unreachable
From 192.168.5.1 icmp_seq=2 Destination Host Unreachable
From 192.168.5.1 icmp_seq=3 Destination Host Unreachable

Adakah yang bisa memberi tahu saya apa masalahnya dan bagaimana saya bisa menyelesaikannya?

Pengaturan dan output terkait

root@arm:/etc# uname -a
Linux arm 3.14.4-armv7-x6 #1 SMP Tue May 20 15:29:16 CEST 2014 armv7l GNU/Linux

root@arm:/etc# sysctl -p
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.eth0.rp_filter = 0
sysctl: cannot stat /proc/sys/net/ipv4/conf/eth1/rp_filter: No such file or directory
net.ipv4.conf.lo.rp_filter = 0

root@arm:/etc# ip route
default via 85.5.48.1 dev wlan3 
85.5.48.0/24 dev wlan3  proto kernel  scope link  src 85.5.48.110 
192.168.5.0/24 dev wlan2  proto kernel  scope link  src 192.168.5.1 

root@arm:/etc# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         supercore.backb 0.0.0.0         UG    0      0        0 wlan3
85.5.48.0       *               255.255.255.0   U     0      0        0 wlan3
192.168.5.0     *               255.255.255.0   U     0      0        0 wlan2

root@arm:/etc# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  

 root@arm:/etc# cat /etc/network/interfaces 
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback

auto wlan2
iface wlan2 inet static
    address 192.168.5.1
    network 192.168.5.0
    netmask 255.255.255.0

auto wlan3

root@arm:/etc# iptables-save
# Generated by iptables-save v1.4.14 on Wed Jun  4 08:39:05 2014
*nat
:PREROUTING ACCEPT [2634:425297]
:INPUT ACCEPT [1992:263181]
:OUTPUT ACCEPT [7:488]
:POSTROUTING ACCEPT [1:84]
-A POSTROUTING -o wlan3 -j MASQUERADE
-A POSTROUTING -o wlan3 -j MASQUERADE
-A POSTROUTING -o wlan3 -j MASQUERADE
COMMIT
# Completed on Wed Jun  4 08:39:05 2014
# Generated by iptables-save v1.4.14 on Wed Jun  4 08:39:05 2014
*filter
:INPUT ACCEPT [4705:642335]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [31:4015]
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan2 -o wlan3 -j ACCEPT
-A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Wed Jun  4 08:39:05 2014

root@arm:/etc# ifconfig 
br0       Link encap:Ethernet  HWaddr 42:42:30:df:a0:d0  
          inet6 addr: fe80::4042:30ff:fedf:86d0/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:106 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:31581 (30.8 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:5 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

mon.wlan2 Link encap:UNSPEC  HWaddr 64-01-02-18-03-6B-00-00-00-00-00-00-00-00-00-00  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:24415 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5163458 (4.9 MiB)  TX bytes:0 (0.0 B)

wlan2     Link encap:Ethernet  HWaddr 64:02:47:a8:24:80  
          inet addr:192.168.5.1  Bcast:192.168.5.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3210 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3236 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:166955 (163.0 KiB)  TX bytes:230200 (224.8 KiB)

wlan3     Link encap:Ethernet  HWaddr 64:02:47:14:18:be  
          inet addr:85.5.64.110  Bcast:85.5.64.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:40520 errors:0 dropped:0 overruns:0 frame:0
          TX packets:218 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:5549564 (5.2 MiB)  TX bytes:27413 (26.7 KiB)

root@arm:/etc# cat /etc/hostapd.conf 
interface=wlan2
driver=nl80211
ssid=test_network
hw_mode=g
channel=1
ctrl_interface=/var/run/hostapd
ctrl_interface_group=0
macaddr_acl=0
auth_algs=1
wpa=2
wpa_passphrase=mypassword
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP CCMP
rsn_pairwise=CCMP

root@arm:/etc# cat /etc/dhcp/dhcpd.conf 
option domain-name "mydomain.org";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.5.0 netmask 255.255.255.0 {
  range 192.168.5.10 192.168.5.20;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.5.255;
option domain-name-servers 192.168.5.1;
  option routers 192.168.5.1;
option domain-name-servers 8.8.4.4;
}

root@arm:/etc# hostapd -v
hostapd v2.2-devel

Perangkat Wi-Fi menggunakan AR9271chipset dan ath9k_htcdriver

EDIT:

root@arm:~#  tcpdump -i wlan2 -n icmp
[  569.446472] device wlan2 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan2, link-type EN10MB (Ethernet), capture size 65535 bytes
16:54:31.260589 IP 192.168.5.10 > 83.5.146.49: ICMP echo request, id 3867, seq 17, length 64
16:55:54.175933 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 1, length 64
16:55:55.185028 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 2, length 64
16:55:56.192626 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 3, length 64
16:55:57.200836 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 4, length 64
16:55:58.208679 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 5, length 64
16:55:59.216827 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 6, length 64
16:56:00.224792 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 7, length 64
16:56:01.232757 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 8, length 64
16:56:02.241485 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 9, length 64
16:56:03.249084 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 10, length 64
16:56:04.256561 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 11, length 64
16:56:05.264404 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 12, length 64
16:56:06.272613 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 13, length 64
16:56:07.281494 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 14, length 64
16:56:08.288482 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 15, length 64
16:56:09.296661 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 16, length 64
16:56:10.304534 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 17, length 64
^C
18 packets captured
18 packets received by filter
0 packets dropped[  687.418762] device wlan2 left promiscuous mode
 by kernel
root@arm:~#  tcpdump -i wlan3 -n icmp
[  699.226867] device wlan3 entered promiscuous mode
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on wlan3, link-type EN10MB (Ethernet), capture size 65535 bytes
16:56:22.402374 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 29, length 64
16:56:23.408142 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 30, length 64
16:56:24.416259 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 31, length 64
16:56:25.424743 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 32, length 64
16:56:26.435974 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 33, length 64
16:56:27.439971 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 34, length 64
16:56:28.448028 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 35, length 64
16:56:29.456024 IP 192.168.5.10 > 8.8.8.8: ICMP echo request, id 3945, seq 36, length 64
^C
8 packets captured
8 packets received by filter
0 packets dropped [  706.608520] device wlan3 left promiscuous mode
by kernel
root@arm:~# 
Angs
sumber
Dalam cuplikan pertama, nama-nama antarmuka dibalik. Pertimbangkan untuk memperbaikinya (saya tidak memiliki cukup karma untuk melakukan pengeditan kecil ini sendiri).
kostix
Jadi, apa masalahnya?
kostix
Maksud saya cuplikan pertama dalam pertanyaan. Masalah koneksi masih ada
Angs
Saya perhatikan Anda memiliki antarmuka jembatan di sana. Apa yang dilakukannya di sana?
jornane
itu dibuat oleh hostapd sebelumnya. Saya menghapusnya, tetapi tidak ada yang berubah.
Angs

Jawaban:

1

Tidak benar-benar jawaban tetapi dua petunjuk tidak cocok untuk format komentar:

  • Saat Anda pingsuka ini, paket tidak melintasi FORWARDrantai dan melewati OUTPUTrantai, jadi Anda tidak benar-benar menguji pengaturan firewall FWIW.

    Masalah lain yang mungkin terjadi karena alasan yang sama (meskipun saya tidak benar-benar yakin) adalah bahwa karena paket dibuat pada host lokal, tidak diteruskan, penyamaran tidak berlaku untuk itu dan sehingga seharusnya akan dibunuh oleh kernel pada saat stack akan mengirimkannya wlan3— karena jaringan itu paket yang memiliki alamat sumbernya di subnet pribadi akan menjadi "martian", dan mengirimkan paket-paket seperti itu secara eksplisit dilarang untuk router . Bagaimanapun, bahkan jika paket ini akan dikirim, itu akan dibunuh oleh 85.5.48.1gateway untuk alasan yang sama.

    Untuk membuktikan atau menyangkal hipotesis ini, gunakan tcpdumppada antarmuka keluar:

    1. Menjalankan

      # tcpdump -i wlan3 -n icmp
      
    2. Ping seperti sebelumnya dan lihat apakah Anda akan melihat permintaan gema ICMP di kawat, dan jika ya, alamat mana yang dikandungnya dalam tajuk IP mereka.

  • Pengaturan firewall Anda memiliki kebijakan untuk FORWARDrantai diatur ke ACCEPT. Jika ini OK untuk pengaturan Anda, tidak ada gunanya menambahkan aturan eksplisit ke rantai itu karena semuanya diperbolehkan.

    Di sisi lain, Anda dapat mempertimbangkan untuk menetapkan kebijakan itu DROP. Sebagian besar pengaturan memiliki kebijakan untuk INPUTdan FORWARDdiatur ke DROPdan kemudian hanya mengizinkan jenis lalu lintas eksplisit.

    Tetapi perhatikan bahwa dalam kasus Anda tidak memiliki aturan (dengan ACCEPTkebijakan) tidak apa-apa saat penerusan Anda berfungsi. Setelah itu, pertimbangkan untuk mengencangkan pengaturan.

Kostix
sumber
terima kasih atas balasan dan informasinya. Saya menambahkan output tcpdump sebagai EDIT pada pertanyaan. Saya ping 8.8.8.8 dari komputer yang berbeda yang terhubung ke antarmuka wlan2 (hostapd), tetapi saya tidak mendapatkan balasan. Saya tidak dapat menelusuri web juga. Apakah Anda pikir itu adalah titik akses (router yang debian terhubung) yang membunuh penerusan IP atau punya saran baru?
Angs
1
Tcpdump pada antarmuka wlan3 menunjukkan bahwa kernel meneruskan permintaan gema ICMP, tetapi tidak menerjemahkannya. Output yang diharapkan pada wlan3 adalah 85.5.64.110 -> 8.8.8.8. Perilaku di sini tidak berbeda dengan hanya menyalakan IP forwardin dengan sysctl. (mungkin itu masalahnya ..?)
Nevin Williams
1
Jika Anda bisa, perlihatkan tcpdump dengan -v untuk menampilkan penghitung TTL paket. Ini mungkin memberi wawasan.
Nevin Williams
@NevinWilliams, saya memberi daya pada perangkat hari ini dan berikut adalah pengaturan pastebin.com/eB7G3XRT (sama seperti di atas). Berikut ini adalah keluaran tcpdump pastebin.com/W0QfxqHD yang saya ping ke 192.168.5.1 lalu 8.8.8.8 dari komputer lain (192.168.5.10). Kali ini, wlan3 tidak menampilkan icmp sama sekali. Saya tidak tahu apa yang berbeda kali ini. Sebagai tambahan, berikut adalah file .config dari Kernel paste.ubuntu.com/7520069
Angs
0

Saya akan mulai dengan menghapus kedua aturan tabel FORWARD Anda

sudo iptables -A FORWARD -i wlan3 -o wlan2 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan2 -o wlan3 -j ACCEPT

tetap pertahankan aturan NAT sederhana

sudo iptables -t nat -A POSTROUTING -o wlan3 -j MASQUERADE

Sekarang mari kita mulai bekerja; setelah itu kita bisa memikirkan aturan yang mungkin lebih baik untuk melindungi wlan3 net

Menepuk
sumber
Terima kasih Pat, saya mendefinisikan tabel seperti yang Anda sarankan tetapi tidak memecahkan masalah
Angs
Apakah Anda menambahkan aturan itu ke modul iptables yang sepenuhnya "terbuka"? Maksudku; apakah Anda yakin tidak ada aturan sebelumnya yang mencegah perutean normal di dalam kotak Anda?
Pat
Saya memverifikasi bahwa pada boot iptables-save menunjukkan tabel bersih pastebin.com/9ZZDDUYt maka saya menambahkan aturan baru.
Angs
1
maka sepertinya kotak Anda tidak merutekan antar antarmuka. apakah IP forwarding Anda diaktifkan? Anda yakin / proc / sys / net / ipv4 / ip_forward = 1 saat Anda melakukan tes?
Pat
sysctl -p menunjukkan output yang sama dengan yang diposting dalam pertanyaan. itu menunjukkan penerusan ip diaktifkan. apakah Anda tahu apa yang dapat menyebabkan pemblokiran IP forwarding atau bagaimana saya bisa men-debug-nya?
Angs
0

Sangat mudah untuk melewatkan sesuatu dalam masalah seperti ini, tetapi inilah yang menarik perhatian saya:

Di / etc / network / interfaces , Anda belum mendefinisikan gateway default untuk wlan2. Gateway default untuk wlan2harus sama dengan alamat IP itu sendiri, karena kotak penerusan akan menjadi router.

auto wlan2
iface wlan2 inet static
    address 192.168.5.1
    network 192.168.5.0
    netmask 255.255.255.0
    gateway 192.168.5.1

EDIT: Saya baru saja memperhatikan bahwa wlan3tidak memiliki gateway baik di output dari ip route. Rindu itu sebelumnya. wlan3juga harus dikonfigurasi dengan gateway, baik melalui DHCP atau secara manual. Gateway ini akan menjadi router untuk jaringan itu, yang bukan kotak yang sedang kita bicarakan di sini.

Bisakah Anda memeriksa apakah yang berikut ini berfungsi?

ping -I wlan3 google.com

Jika tidak, kotak Anda tidak dikonfigurasi dengan benar untuk mengakses internet, dan akibatnya NAT juga tidak akan berfungsi.

jornane
sumber
Terima kasih Yørn. Saya menambahkan baris gateway di / etc / network / interfaces, tetapi tidak menyelesaikan masalah.
Angs
Saya rindu yang wlan3tidak memiliki gateway juga, diambil dari output ip route. Saya menambahkan info ini ke jawabannya.
jornane
0

Dari apa yang Anda tunjukkan tidak ada masalah, mengingat bahwa Internet terhubung ke wlan3diharapkan itu

ping -I wlan2 google.com

tidak akan berfungsi, tergantung pada versi ping yang -Iberarti mengirim paket keluar dari antarmuka tertentu, atau menggunakan alamat antarmuka sebagai alamat sumber.

Timothy Baldwin
sumber