Soru TUN cihazından (C ++ arka uç) gelen trafiği varsayılan ağ geçidine iletme


Aşağıdaki sorun, bir sorunum olduğu daha büyük bir çözümün sadece bir parçasıdır. Diğer tüm elemanlar şimdiye kadar işe yarıyor gibi görünüyor, bu yüzden sorun yaşadığım çok küçük parçaları anlatmaya çalışacağım.

Bir linux makinem var. tun0 (tünel açma arayüzü) ve eth0 (internet benim varsayılan ağ geçididir).

Hedef: Amacım tun0 gelen paketleri almak ve bunları varsayılan ağ geçidine iletmektir. Yani aslında oldukça basit NAT davası, ben fiziksel arayüzü taklit tun0 ile "paylaşmak" internet istiyorum.

Tun kullanılarak oluşturuldu

sudo openvpn --mktun --dev tun0 --user USER
sudo ip addr add 10.2.0.1/24 dev tun0
sudo ip link set tun0 up

Bu yüzden var ve koşuyorum, ping yapabilirim. Dahası, bu TUN aygıtına bağlanan C ++ uygulamasına sahibim, buradan okuyabilir ve yazabilirim. (fti: işte takip ettiğim bir ders var: http://backreference.org/2010/03/26/tuntap-interface-tutorial/)

C ++'daki bayt dizisine 8.8.8.8'e yapılan bazı doğru ICMP (ping) isteklerini bıraktım. Şimdi, programımı kullanarak tun0 cihazına yazarım. ICMP isteği var

  • kaynak (10.2.0.10) - kernel rotayı tekrar biliyor (aynı alt ağ)
  • varış yeri (8.8.8.8) - Google'ın DNS'si
  • Doğru sağlama toplamı vb. (Wireshark / TShark'ta tun0'da doğru görünür)

Sonra, aşağıdaki rotalarım var:

iptables -F # flush
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface tun0 -j ACCEPT

Ve burada takılıyorum :( Paket varsayılan gw'ye iletilmiyor (tshark sadece doğru olduğunu tahmin ettiğim şekilde tun0 üzerinde görüyor)

Ne kayıp? Belki de bazı alternatif yaklaşımlar (ancak tun cihazını kullanarak yapılmalı ve buna göre bunu yapabilmem gerekir). İlave bilgi:

  • iletme etkin (/ proc / sys / net / ipv4 / ip_forward)
  • 8.8.8.8'e eth0 üzerinden ulaşılabilir (yerelden)
  • varsayılan ağ geçidi doğrudur (ISP üzerinden eth0 üzerinden)
  • rp_tables'i kapatmayı denedim (echo 0> / proc / sys / net / ipv4 / conf / eth5 / rp_filter)
  • Ve bircok digerleri...

Herhangi bir ipucu için şimdiden teşekkür ederiz!


9
2018-02-02 13:14


Menşei


Bunun bir yıldan fazla olduğunu biliyorum, ama bununla bir yere vardın mı? Bende aynı problem var. - hplbsh


Cevaplar:


Alternatif çözüm kullanmak bridgeTun0'nuzu eth0 ile kapatabilir ve tun0 üzerinde nat veya ayar ipi gerekmez, sadece IP'leri aynı alt ağdaki eth0'dan ve aynı anda istemci tünel arayüzlerinde kullandığınız aynı ağ geçidinden geçirebilirsiniz.

Köprü kurma komutları:

# brctl addbr br0
# brctl addif br0 eth0 tun0

www.tldp.org/HOWTO/BRIDGE-STP-HOWTO/set-up-the-bridge

Brctl kullanmak için yüklemek zorunda bridge-utils paketi.   
Eğer dağıtımınız Ubuntu ise: aptitude install bridge-utils


0
2018-03-18 19:47