Yalnızca SSH kullanarak vpn nasıl oluşturulur / ayarlanır?


9

İşte çözmeye çalıştığım problem. Yerel bilgisayarımdan ssh edebildiğim bir sunucu ("uzak sistem") var ama bu uzak sistemin internet bağlantısı yok. Uzaktaki sisteme ssh tabanlı VPN kullanarak yerel bilgisayarım üzerinden internete erişim sağlamak istiyorum. Bunu nasıl başarabilirim? Kısmen işe yarıyor gibi görünen aşağıdakileri denedim. 'Kısmen çalışıyorum' ile kastettiğim, bağlantı paketlerinin (senkronizasyon paketleri) yerel bilgisayarıma gönderilmeleri, ancak internet bağlantısı kuramamalarıdır. Yerel bilgisayardaki paketleri yakalamak için tcpdump kullanıyorum. Yerel bilgisayar ve uzak sistem centos 7 çalıştırıyor.

Kurulum - Not: aşağıdaki komutlar sırayla çalıştırılır. User @ remote komutları uzak sunucuda ve user @ local komutları yerel bilgisayarda çalıştırılır.

[user @ remote ~] $ ip adresi göster
1: lo: mtu 65536 qdisc noqueue durumu BİLİNMİYOR 
    bağlantı / geridönüş 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 kapsam ana bilgisayarı
       sonsuza kadar geçerli_lft tercih sonsuza kadar
    inet6 :: 1/128 kapsam ana bilgisayarı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
2: eth0: mtu 1500 qdisc pfifo_fast durum YUKARI qlen 1000
    bağlantı / eter AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 kapsam küresel dinamik eth0
       Geçerli_Lft 1785Sn Tercih Edilen_Lft 1785Sn
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 kapsam küresel noprefixroute dinamik 
       valid_lft 2591987sn tercih edilen_lft 604787sn
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 kapsam bağlantısı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
[user @ local ~] $ ip adresi göster
1: lo: mtu 65536 qdisc noqueue durumu BİLİNMİYOR 
    bağlantı / geridönüş 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 kapsam ana bilgisayarı
       sonsuza kadar geçerli_lft tercih sonsuza kadar
    inet6 :: 1/128 kapsam ana bilgisayarı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
2: eth0: mtu 1500 qdisc pfifo_fast durum YUKARI qlen 1000
    bağlantı / eter AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 kapsam küresel dinamik eth0
       Geçerli_Lft 1785Sn Tercih Edilen_Lft 1785Sn
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 kapsam küresel noprefixroute dinamik 
       valid_lft 2591987sn tercih edilen_lft 604787sn
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 kapsam bağlantısı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar

Uzak sistemde tun0 arabirimini oluşturun .

[user @ remote ~] $ sudo ip tuntap tun0 mod tun ekle
[user @ remote ~] $ ip adresi göster
1: lo: mtu 65536 qdisc noqueue durumu BİLİNMİYOR 
    bağlantı / geridönüş 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 kapsam ana bilgisayarı
       sonsuza kadar geçerli_lft tercih sonsuza kadar
    inet6 :: 1/128 kapsam ana bilgisayarı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
2: eth0: mtu 1500 qdisc pfifo_fast durum YUKARI qlen 1000
    bağlantı / eter AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 kapsam küresel dinamik eth0
       Geçerli_Lft 1785Sn Tercih Edilen_Lft 1785Sn
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 kapsam küresel noprefixroute dinamik 
       valid_lft 2591987sn tercih edilen_lft 604787sn
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 kapsam bağlantısı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
3: tun0: mtu 1500 qdisc noop durumu AŞAĞI qlen 500
    bağlantı / yok 

Yerel sistemde tun0 arabirimini oluşturun .

[user @ local ~] $ sudo ip tuntap tun0 mod tun ekle
[user @ local ~] $ ip adresi göster
1: lo: mtu 65536 qdisc noqueue durumu BİLİNMİYOR 
    bağlantı / geridönüş 00: 00: 00: 00: 00: 00 brd 00: 00: 00: 00: 00: 00
    inet 127.0.0.1/8 kapsam ana bilgisayarı
       sonsuza kadar geçerli_lft tercih sonsuza kadar
    inet6 :: 1/128 kapsam ana bilgisayarı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
2: eth0: mtu 1500 qdisc pfifo_fast durum YUKARI qlen 1000
    bağlantı / eter AA: BB: CC: DD: EE: FF brd ff: ff: ff: ff: ff: ff
    inet AAA.BBB.CCC.DDD / 24 brd AAA.BBB.CCC.255 kapsam küresel dinamik eth0
       Geçerli_Lft 1785Sn Tercih Edilen_Lft 1785Sn
    inet6 EEEE: FFFF: GGGG: HHHH: IIII: JJJJ: KKKK: LLLL / 64 kapsam küresel noprefixroute dinamik 
       valid_lft 2591987sn tercih edilen_lft 604787sn
    inet6 ABCD :: IIII: JJJJ: KKKK: LLLL / 64 kapsam bağlantısı 
       sonsuza kadar geçerli_lft tercih sonsuza kadar
3: tun0: mtu 1500 qdisc noop durumu AŞAĞI qlen 500
    bağlantı / yok

Tun0'a bir ip adresi atayın ve açın:

[user @ local ~] $ sudo ip addr 10.0.2.1/30 geliştirici ekle0
[user @ local ~] $ sudo ip bağlantısı geliştirici dev0 ayarlandı
[user @ local ~] $ ip adresi göster tun0
3: tun0: mtu 1500 qdisc pfifo_fast durumu AŞAĞI qlen 500
    bağlantı / yok 
    inet 10.0.2.1/30 kapsam küresel ayar0
       sonsuza kadar geçerli_lft tercih sonsuza kadar
[user @ remote ~] $ sudo ip addr add 10.0.2.2/30 dev tun0
[user @ remote ~] $ sudo ip bağlantı kurmak dev tun0 yukarı
[user @ remote ~] $ ip adresi göster tun0
3: tun0: mtu 1500 qdisc pfifo_fast durumu AŞAĞI qlen 500
    bağlantı / yok 
    inet 10.0.2.2/30 kapsam küresel ayar0
       sonsuza kadar geçerli_lft tercih sonsuza kadar

Tünel oluşturmayı etkinleştirmek için uzak ve yerel sistemlerde sshd_config dosyasını değiştirin:

[user @ remote ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config 
PermitTunnel noktadan noktaya
[kullanıcı @ yerel ~] $ sudo grep PermitTunnel / etc / ssh / sshd_config 
PermitTunnel noktadan noktaya

Ssh tüneli oluşturun:

[user @ local ~] $ sudo ssh -f -w0: 0 root @ remote true
root @ remote şifresi: 
[kullanıcı @ yerel ~] $ ps aux | grep root @ remote
kök 1851 0.0 0.0 76112 1348? Ss 23:12 0:00 ssh -f -w0: 0 root @ remote true

Yeni IP adreslerini kullanarak her iki sunucuda da ping testi yapın:

[kullanıcı @ yerel ~] $ ping 10.0.2.2 -c 2
PING 10.0.2.2 (10.0.2.2) 56 (84) bayt veri.
10.0.2.2'den 64 bayt: icmp_seq = 1 ttl = 64 zaman = 1.68 ms
10.0.2.2'den 64 bayt: icmp_seq = 2 ttl = 64 zaman = 0.861 ms

--- 10.0.2.2 ping istatistikleri ---
2 paket iletildi, 2 paket alındı,% 0 paket kaybı, süre 1002 ms
rtt min / ortalama / maks / mdev = 0.861 / 1.274 / 1.688 / 0.415 ms
[kullanıcı @ uzaktan ~] $ ping 10.0.2.1 -c 2
PING 10.0.2.1 (10.0.2.1) 56 (84) bayt veri.
10.0.2.1'den 64 bayt: icmp_seq = 1 ttl = 64 zaman = 0.589 ms
10.0.2.1'den 64 bayt: icmp_seq = 2 ttl = 64 zaman = 0.889 ms

--- 10.0.2.1 ping istatistikleri ---
2 paket iletildi, 2 paket alındı,% 0 paket kaybı, süre 1000 ms
rtt min / ortalama / maks / mdev = 0,589 / 0,739 / 0,889 / 0,150 ms
[kullanıcı @ uzak ~] $ rota
Çekirdek IP yönlendirme tablosu
Hedef Ağ Geçidi Genmask Bayrakları Metrik Ref Kullanım Iface
varsayılan ağ geçidi 0.0.0.0 UG 100 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0
AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[user @ remote ~] $ ip rota gösterisi
AAA.BBB.CCC.1 dev eth0 proto statik metrik 100 üzerinden varsayılan 
10.0.2.0/30 dev tun0 proto çekirdeği kapsam bağlantısı src 10.0.2.2 
AAA.BBB.CCC.0 / 24 dev eth0 proto çekirdek kapsam bağlantısı src AAA.BBB.CCC.31 metrik 100 

Google IP adreslerini alın:

[user @ local ~] $ nslookup google.com
Sunucu: sunucu
Adres: sunucu # 53

Yetkisiz cevap:
İsim: google.com
Adres: 173.194.219.101
İsim: google.com
Adres: 173.194.219.100
İsim: google.com
Adres: 173.194.219.113
İsim: google.com
Adres: 173.194.219.102
İsim: google.com
Adres: 173.194.219.139
İsim: google.com
Adres: 173.194.219.138

ÖNEMLİ: Yukarıdaki komutu farklı bir zamanda çalıştırdım ve farklı bir sonuç aldım. Yukarıdaki nslookup için yanıtınızın benimkiyle aynı olacağını varsaymayın.

Google'ın tüm ip adresleri 173.194.219 ile başladığından, tüm bu ip adreslerini yerel bilgisayar üzerinden yönlendirelim.

[user @ remote ~] $ sudo ip güzergahı 173.194.219.0/24 dev tun0 ekle
[kullanıcı @ uzak ~] $ rota
Çekirdek IP yönlendirme tablosu
Hedef Ağ Geçidi Genmask Bayrakları Metrik Ref Kullanım Iface
varsayılan ağ geçidi 0.0.0.0 UG 100 0 0 eth0
10.0.2.0 0.0.0.0 255.255.255.252 U 0 0 0 tun0
AAA.BBB.CCC.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
173.194.219.0 0.0.0.0 255.255.255.0 U 0 0 0 ayar0
[user @ remote ~] $ ip rota gösterisi
AAA.BBB.CCC.1 dev eth0 proto statik metrik 100 üzerinden varsayılan 
10.0.2.0/30 dev tun0 proto çekirdeği kapsam bağlantısı src 10.0.2.2 
AAA.BBB.CCC.0 / 24 dev eth0 proto çekirdek kapsam bağlantısı src AAA.BBB.CCC.31 metrik 100 
173.194.219.0/24 dev tun0 kapsam bağlantısı 

İp_forwarding'i etkinleştir:

[kullanıcı @ yerel ~] $ grep ip_forward /etc/sysctl.conf 
net.ipv4.ip_forward = 1
[user @ local ~] $ sudo servis ağı yeniden başlatılıyor
Ağ yeniden başlatılıyor (systemctl aracılığıyla): [Tamam]

Yerel bilgisayarda tcpdump kullanarak paket yakalamayı kurun:

[user @ local ~] $ sudo tcpdump -nn -vv 'bağlantı noktası 22' değil
tcpdump: herhangi bir bağlantı türü LINUX_SLL (Linux pişmiş) dinleme, 65535 bayt yakalama boyutu

Uzak sunucudan Google'a bağlanmaya çalışın.

[user @ remote ~] $ openssl s_client -connect google.com:443
socket: Barınacak yol yok
connect: errno = 113

Uzak sunucuda openssl komutu çalıştırılır çalıştırılmaz, tcpdump bazı paketleri yakalar:

    10.0.2.2.52768> 173.194.219.102.443: Bayraklar [S], cksum 0x8702 (doğru), seq 994650730, win 29200, seçenekler [mss 1460, sackOK, TS val 7701438 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.247753 IP (tos 0x0, ttl 64, kimlik 46037, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.48774> 173.194.219.100.443: Bayraklar [S], cksum 0x47a7 (doğru), seq 2218733674, win 29200, seçenekler [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.247883 IP (tos 0xc0, ttl 64, id 9538, ofset 0, bayraklar [yok], proto ICMP (1), uzunluk 88)
    10.0.2.1> 10.0.2.2: ICMP ana bilgisayarı 173.194.219.100 ulaşılamıyor - yönetici yasak, uzunluk 68
    IP (tos 0x0, ttl 63, id 46037, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.48774> 173.194.219.100.443: Bayraklar [S], cksum 0x47a7 (doğru), seq 2218733674, win 29200, seçenekler [mss 1460, sackOK, TS val 7701439 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.253068 IP (tos 0x0, ttl 64, kimlik 26282, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.51312> 173.194.219.101.443: Bayraklar [S], cksum 0x6ff8 (doğru), sıra 2634016105, kazanç 29200, seçenekler [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.254771 IP (tos 0xc0, ttl 64, id 9539, ofset 0, bayraklar [yok], proto ICMP (1), uzunluk 88)
    10.0.2.1> 10.0.2.2: ICMP ana bilgisayarı 173.194.219.101 erişilemiyor - yönetici yasak, uzunluk 68
    IP (tos 0x0, ttl 63, kimlik 26282, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.51312> 173.194.219.101.443: Bayraklar [S], cksum 0x6ff8 (doğru), sıra 2634016105, kazanç 29200, seçenekler [mss 1460, sackOK, TS val 7701443 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.258805 IP (tos 0x0, ttl 64, kimlik 9293, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.33686> 173.194.219.139.443: Bayraklar [S], cksum 0x542b (doğru), seq 995927943, win 29200, seçenekler [mss 1460, sackOK, TS val 7701450 ecr 0, nop, wscale 7], uzunluk 0
00: 49: 33.258845 IP (tos 0xc0, ttl 64, id 9540, ofset 0, bayraklar [yok], proto ICMP (1), uzunluk 88)
    10.0.2.1> 10.0.2.2: ICMP ana bilgisayarı 173.194.219.139 erişilemez - yönetici yasak, uzunluk 68
    IP (tos 0x0, ttl 63, id 9293, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.33686> 173.194.219.139.443: Bayraklar [S], cksum 0x542b (doğru), seq 995927943, win 29200, seçenekler [mss 1460, sackOK, TS val 7701450 ecr 0, nop, wscale 7], uzunluk 0
^ Cı
13 paket ele geçirildi
Filtre ile alınan 13 paket
0 paket çekirdek tarafından bırakıldı

Tcpdump kullanılarak yakalanan paketler bağlantı kurmak için bir girişimde bulunulduğunu gösterir (Paketleri senkronize et) ancak hiçbir şey alınmadı. Ayrıca 10.0.2.1 > 10.0.2.2: ICMP host 173.194.219.139 unreachable - admin prohibited, length 68bir sorun olduğunu gösteren bir mesaj var.

Bu soruna geçici bir çözüm bulmak için herhangi bir öneriniz var mı? Eklenmesi gereken iptable kuralları var mı? Güvenlik duvarı sorunları (güvenlik duvarı-d?).


Not # 1
iptables-save çıktısı:

[user @ local ~] $ sudo iptables -t nat -A POSTROUTING -s 10.0.2.2/32! -d 10.0.2.1/30 -j MASQUERADE -o eth0
[user @ local ~] $ sudo iptables-save
# İptables-save v1.4.21 tarafından Cmt 15 Nis tarihinde oluşturuldu 01:40:57 2017
* nat
: HAZIRLIK KABULÜ [35: 8926]
: GİRİŞ KABULÜ [1:84]
: ÇIKTI KABUL [6: 439]
: POSTROUTING KABUL [6: 439]
: OUTPUT_direct - [0: 0]
: POSTROUTING_ZONES - [0: 0]
: POSTROUTING_ZONES_SOURCE - [0: 0]
: POSTROUTING_direct - [0: 0]
: POST_public - [0: 0]
: POST_public_allow - [0: 0]
: POST_public_deny - [0: 0]
: POST_public_log - [0: 0]
: PREROUTING_ZONES - [0: 0]
: PREROUTING_ZONES_SOURCE - [0: 0]
: PREROUTING_direct - [0: 0]
: PRE_public - [0: 0]
: PRE_public_allow - [0: 0]
: PRE_public_deny - [0: 0]
: PRE_public_log - [0: 0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A ÇIKIŞ -j OUTPUT_direct
-A POSTROUTING -j POSTROUTING_direct
- BİR POSTROUTING -j POSTROUTING_ZONES_SOURCE
-A POSTROUTING -j POSTROUTING_ZONES
-BİR SONRAKİ -s 10.0.2.2/32! -d 10.0.2.0/30 -j MASQUERADE
-BİR POSTROUTING_ZONES -o eth0 -g POST_public
-BİR POSTROUTING_ZONES -g POST_public
-A POST_public -j POST_public_log
-A POST_public -j POST_public_deny
-A POST_public -j POST_public_allow
-Bir PREROUTING_ZONES -i eth0 -g PRE_public
-Bir PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-PRE_public -j PRE_public_allow
COMMIT
# Cmt 15 Nis tarihinde tamamlandı 01:40:57 2017
# İptables-save v1.4.21 tarafından Cmt 15 Nis tarihinde oluşturuldu 01:40:57 2017
* -ütüleme
: HAZIRLIK KABULÜ [169: 18687]
: GİRİŞ KABULÜ [144: 11583]
: İLERİ KABUL [0: 0]
: ÇIKTI KABUL [80: 8149]
: POSTROUTING KABUL [80: 8149]
: FORWARD_direct - [0: 0]
: INPUT_direct - [0: 0]
: OUTPUT_direct - [0: 0]
: POSTROUTING_direct - [0: 0]
: PREROUTING_ZONES - [0: 0]
: PREROUTING_ZONES_SOURCE - [0: 0]
: PREROUTING_direct - [0: 0]
: PRE_public - [0: 0]
: PRE_public_allow - [0: 0]
: PRE_public_deny - [0: 0]
: PRE_public_log - [0: 0]
-A PREROUTING -j PREROUTING_direct
-A PREROUTING -j PREROUTING_ZONES_SOURCE
-A PREROUTING -j PREROUTING_ZONES
-A INPUT -j INPUT_direct
-BEKİ -J FORWARD_direct
-A ÇIKIŞ -j OUTPUT_direct
-A POSTROUTING -j POSTROUTING_direct
-Bir PREROUTING_ZONES -i eth0 -g PRE_public
-Bir PREROUTING_ZONES -g PRE_public
-A PRE_public -j PRE_public_log
-A PRE_public -j PRE_public_deny
-PRE_public -j PRE_public_allow
COMMIT
# Cmt 15 Nis tarihinde tamamlandı 01:40:57 2017
# İptables-save v1.4.21 tarafından Cmt 15 Nis tarihinde oluşturuldu 01:40:57 2017
*güvenlik
: GİRİŞ KABUL [2197: 163931]
: İLERİ KABUL [0: 0]
: ÇIKTI KABUL [1229: 185742]
: FORWARD_direct - [0: 0]
: INPUT_direct - [0: 0]
: OUTPUT_direct - [0: 0]
-A INPUT -j INPUT_direct
-BEKİ -J FORWARD_direct
-A ÇIKIŞ -j OUTPUT_direct
COMMIT
# Cmt 15 Nis tarihinde tamamlandı 01:40:57 2017
# İptables-save v1.4.21 tarafından Cmt 15 Nis tarihinde oluşturuldu 01:40:57 2017
*çiğ
: HAZIRLIK KABULÜ [2362: 184437]
: ÇIKTI KABUL [1229: 185742]
: OUTPUT_direct - [0: 0]
: PREROUTING_direct - [0: 0]
-A PREROUTING -j PREROUTING_direct
-A ÇIKIŞ -j OUTPUT_direct
COMMIT
# Cmt 15 Nis tarihinde tamamlandı 01:40:57 2017
# İptables-save v1.4.21 tarafından Cmt 15 Nis tarihinde oluşturuldu 01:40:57 2017
* filtre
: GİRİŞ KABUL [0: 0]
: İLERİ KABUL [0: 0]
: ÇIKTI KABUL [80: 8149]
: FORWARD_IN_ZONES - [0: 0]
: FORWARD_IN_ZONES_SOURCE - [0: 0]
: FORWARD_OUT_ZONES - [0: 0]
: FORWARD_OUT_ZONES_SOURCE - [0: 0]
: FORWARD_direct - [0: 0]
: FWDI_public - [0: 0]
: FWDI_public_allow - [0: 0]
: FWDI_public_deny - [0: 0]
: FWDI_public_log - [0: 0]
: FWDO_public - [0: 0]
: FWDO_public_allow - [0: 0]
: FWDO_public_deny - [0: 0]
: FWDO_public_log - [0: 0]
: INPUT_ZONES - [0: 0]
: INPUT_ZONES_SOURCE - [0: 0]
: INPUT_direct - [0: 0]
: IN_public - [0: 0]
: IN_public_allow - [0: 0]
: IN_public_deny - [0: 0]
: IN_public_log - [0: 0]
: OUTPUT_direct - [0: 0]
-A GİRİŞ -m kontrack --ctstate İLGİLİ, KURULU -j KABUL
-BİR GİRİŞ -i lo -j KABUL
-A INPUT -j INPUT_direct
-BİR GİRİŞ -j INPUT_ZONES_SOURCE
-BİR GİRİŞ -j INPUT_ZONES
-A INPUT -m bağlantısı - ctstate INVALID -j DAMLA
-A INPUT -j REJECT --rep-ile icmp-host-yasak
-A İLERİ -m conntrack --ctstate İLGİLİ, KURULU -j KABUL
-İLERİ İLERİ -i lo -j KABUL
-BEKİ -J FORWARD_direct
-İLERİ İLERI -j FORWARD_IN_ZONES_SOURCE
-BAN İLERI -j FORWARD_IN_ZONES
-BAN İLERI -j FORWARD_OUT_ZONES_SOURCE
-BAN İLERI -j FORWARD_OUT_ZONES
-A İLERİ -m conntrack --ctstate INVALID -j DAMLA
-BEKİ -j REDDET --rep-icmp-host ile yasaklanmış
-A ÇIKIŞ -j OUTPUT_direct
-Bir FORWARD_IN_ZONES -i eth0 -g FWDI_public
-Bir FORWARD_IN_ZONES -g FWDI_public
-Bir FORWARD_OUT_ZONES -o eth0 -g FWDO_public
-Bir FORWARD_OUT_ZONES -g FWDO_public
-A FWDI_public -j FWDI_public_log
-A FWDI_public -j FWDI_public_deny
-A FWDI_public -j FWDI_public_allow
-A FWDI_public -p icmp -j KABUL
-A FWDO_public -j FWDO_public_log
-A FWDO_public -j FWDO_public_deny
-A FWDO_public -j FWDO_public_allow
-A INPUT_ZONES -i eth0 -g IN_public
-A INPUT_ZONES -g IN_public
-A IN_public -j IN_public_log
-A IN_public -j IN_public_deny
-A IN_public -j IN_public_allow
-A IN_public -p icmp -j KABUL
-A IN_public_allow -p tcp -m tcp --port 22 -m bağlantı - ctstate YENİ -j KABUL
COMMIT
# Cmt 15 Nis tarihinde tamamlandı 01:40:57 2017


Not # 2:
Yalnızca yerel sunucunun erişebildiği ayrı bir ana bilgisayara apache web sunucusu ayarladım. 80 numaralı bağlantı noktasını dinleyen web sunucusu üzerinde tcpdump çalıştırdım. Çalıştığımda telnet webserver 80aşağıdaki paketleri yakaladım. TCP Bağlantısı kurulduğundan bu beklenen davranıştır (S, S-Ack, Ack).

[user @ webserver ~] $ sudo tcpdump -nn -vv 'bağlantı noktası 22 ve 80 değil' -i eth0 
tcpdump: eth0'da dinleme, bağlantı tipi EN10MB (Ethernet), yakalama boyutu 65535 bayt
07: 17: 30.411474 IP (tos 0x10, ttl 64, kimlik 34376, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    local.server.46710> web.server.80: Bayraklar [S], cksum 0x8412 (yanlış -> 0x6d96), seq 3018586542, win 29200, seçenekler [mss 1460, sackOK, TS val 3047398 ecr 0, nop, wscale 7] , uzunluk 0
07: 17: 30.411557 IP (tos 0x0, ttl 64, id 0, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    web.server.80> local.server.46710: Bayraklar [S.], cksum 0x8412 (yanlış -> 0x9114), seq 2651711943, ack 3018586543, win 28960, seçenekler [mss 1460, sackOK, TS val 37704524 ecr 3047398, nop , wscale 7], uzunluk 0
07: 17: 30.411725 IP (tos 0x10, ttl 64, kimlik 34377, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 52)
    local.server.46710> web.server.80: Bayraklar [.], cksum 0x840a (yanlış -> 0x301c), sıra 1, ack 1, win 229, seçenekler [nop, nop, TS val 3047398 ecr 37704524], uzunluk 0

Web sunucusuna yerel sunucu üzerinden uzak sunucudan bağlanmaya çalıştığımda, web sunucusundaki tcpdump herhangi bir paketi (ilk Eşitleme bile değil) yakalamaz, ancak yerel sunucu web sunucusuna gönderilen Eşitleme paketini yakalar (aşağıya bakın). Bu, bir şeyin paketlerin web sunucusuna gönderilmesini engellediğine inanıyor - belki de bir yanlış yapılandırma veya güvenlik duvarı.

[user @ local ~] $ sudo tcpdump -nn -vv 'bağlantı noktası 22 ve 80' -i herhangi biri değil
tcpdump: herhangi bir bağlantı türü LINUX_SLL (Linux pişmiş) dinleme, 65535 bayt yakalama boyutu
02: 24: 09.135842 IP (tos 0x10, ttl 64, kimlik 38062, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.50558> web.server.80: Bayraklar [S], cksum 0x668d (doğru), seq 69756226, win 29200, seçenekler [mss 1460, sackOK, TS val 4780524 ecr 0, nop, wscale 7], uzunluk 0

ÖNEMLİ: paketler eth0 üzerinden yönlendirilmez, bunun yerine paketleri tun0 (web sunucusu) üzerinden tun0 üzerinden gönderilir (başarısız olur). Tun0 arabiriminde tcpdump çalıştırarak bunu doğrulayabilirim:

[user @ local ~] $ sudo tcpdump -nn -vv 'bağlantı noktası 22 ve 80 değil' -i tun0
tcpdump: tun0'da dinleme, bağlantı türü RAW (Raw IP), yakalama boyutu 65535 bayt
02: 28: 10.295972 IP (tos 0x10, ttl 64, kimlik 46976, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.50560> webserver.80: Bayraklar [S], cksum 0xd560 (doğru), seq 605366388, kazanç 29200, seçenekler [mss 1460, sackOK, TS val 5021684 ecr 0, nop, wscale 7], uzunluk 0


Not # 3:
Yerel bilgisayarda firewalld özelliğini kapattım ve senkronizasyon paketleri web sunucusu tarafından alındı.

[user @ local ~] $ sudo systemctl ateşlemeyi durdur
[user @ webserver ~] $ sudo tcpdump -nn -vv 'bağlantı noktası 22 ve 80 değil' -i eth0
tcpdump: eth0'da dinleme, bağlantı tipi EN10MB (Ethernet), yakalama boyutu 65535 bayt
08: 25: 17.390912 IP (tos 0x10, ttl 63, kimlik 61767, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.50580> web.server.80: Bayraklar [S], cksum 0x30dc (doğru), seq 2601927549, win 29200, seçenekler [mss 1460, sackOK, TS val 7123514 ecr 0, nop, wscale 7], uzunluk 0
08: 25: 17.391003 IP (tos 0x0, ttl 64, id 0, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    web.server.80> 10.0.2.2.50580: Bayraklar [S.], cksum 0x4e23 (yanlış -> 0xa316), sıra 959115533, ack 2601927550, 28960 kazan, seçenekler [mss 1460, sackOK, TS val 41771503 ecr 7123514, nop , wscale 7], uzunluk 0
08: 25: 17.391192 IP (tos 0x0, ttl 128, id 60032, ofset 0, bayraklar [yok], proto TCP (6), uzunluk 40)
    10.0.2.2.50580> web.server.80: [R] bayrakları, cksum 0x7339 (doğru), seq 2601927550, win 8192, uzunluk 0
08: 25: 18.393794 IP (tos 0x10, ttl 63, kimlik 61768, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    10.0.2.2.50580> web.server.80: Bayraklar [S], cksum 0x2cf1 (doğru), seq 2601927549, win 29200, seçenekler [mss 1460, sackOK, TS val 7124517 ecr 0, nop, wscale 7], uzunluk 0
08: 25: 18.393898 IP (tos 0x0, ttl 64, id 0, ofset 0, bayraklar [DF], proto TCP (6), uzunluk 60)
    web.server.80> 10.0.2.2.50580: Bayraklar [S.], cksum 0x4e23 (yanlış -> 0x7e71), sıra 974785773, ack 2601927550, 28960 kazan, seçenekler [mss 1460, sackOK, TS val 41772506 ecr 7124517, nop , wscale 7], uzunluk 0
08: 25: 18.394003 IP (tos 0x0, ttl 128, id 60033, ofset 0, bayraklar [yok], proto TCP (6), uzunluk 40)
    10.0.2.2.50580> web.server.80: [R] bayrakları, cksum 0x566a (doğru), seq 2601927550, win 8192, uzunluk 0

Şimdi açıkça, paket web sunucusuna gönderilmeden önce kaynak IP'nin yerel sunucunun IP adresiyle eşleşecek şekilde güncellenmesi gerekiyor. @Xin'in önerdiği gibi, NAT'ın yerel sunucuda ayarlanması gerekir.


Not # 4: Web
sunucusuna bağlanmaya çalıştığımda, kural 9 için pkts sayısının 1 kadar arttığını görebiliyorum (aşağıda görüldüğü gibi).

[user @ local ~] $ sudo iptables -nvL - satır numaraları
..........
Zincir İLERİ (politika KABUL 0 paket, 0 bayt)
num pkts bayt hedef koruma kapsam dışı bırak kaynak hedef         
1 0 0 KABUL ET - * * 0.0.0.0/0 0.0.0.0/0 ctstate İLGİLİ, KURULU
2 0 0 KABUL ET - lo * 0.0.0.0/0 0.0.0.0/0           
3 1 60 FORWARD_doğrudan - * * 0.0.0.0/0 0.0.0.0/0           
4 1 60 FORWARD_IN_ZONES_SOURCE tümü - * * 0.0.0.0/0 0.0.0.0/0           
5 1 60 FORWARD_IN_ZONES tümü - * * 0.0.0.0/0 0.0.0.0/0           
6 1 60 FORWARD_OUT_ZONES_SOURCE tümü - * * 0.0.0.0/0 0.0.0.0/0           
7 1 60 FORWARD_OUT_ZONES tümü - * * 0.0.0.0/0 0.0.0.0/0           
8 0 0 DROP all - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
9 1 60 Tümünü reddet - * * 0.0.0.0/0 0.0.0.0/0 reddet-icmp-host ile yasaklandı
..........
[user @ local ~] $ sudo iptables -D İLERİ 9

FORWARD zincirindeki kural 9 silindikten sonra (yukarıdan, @xin önerdiği gibi), web sunucusuna bağlanabiliyorum.

[user @ local ~] $ sudo iptables -nvL - satır numaraları
..........
Zincir İLERİ (politika KABUL 1 paket, 60 bayt)
num pkts bayt hedef koruma kapsam dışı bırak kaynak hedef         
1 12 5857 Tümünü KABUL - * * 0.0.0.0/0 0.0.0.0/0 ctstate İLGİLİ, KURULU
2 0 0 KABUL ET - lo * 0.0.0.0/0 0.0.0.0/0           
3 2 120 FORWARD_doğrudan - * * 0.0.0.0/0 0.0.0.0/0           
4 2 120 FORWARD_IN_ZONES_SOURCE tümü - * * 0.0.0.0/0 0.0.0.0/0           
5 2 120 FORWARD_IN_ZONES tümü - * * 0.0.0.0/0 0.0.0.0/0           
6 2 120 FORWARD_OUT_ZONES_SOURCE tümü - * * 0.0.0.0/0 0.0.0.0/0           
7 2 120 FORWARD_OUT_ZONES tümü - * * 0.0.0.0/0 0.0.0.0/0           
8 0 0 DROP all - * * 0.0.0.0/0 0.0.0.0/0 ctstate INVALID
..........

Yanıtlar:


4

Paketlerin kaynak adresi, yerel makine tarafından yanıtların alınabilmesi için yerel makinenin adresinden biriyle değiştirilmelidir, aksi takdirde bu paketleri bir sonraki yönlendiricilere göndermenin (iyi) bir nedeni yoktur, yine de cevap alınamaz. iptables MASQUERADEve SNATbu paketlerin kaynak adresini değiştirmek için kullanışlıdır:

[user@local ~]$ iptables -t nat -A POSTROUTING -s 10.0.2.2/32 ! -d 10.0.2.1/30 -j MASQUERADE -o eth0

@Xin yanıtı için teşekkürler. Verdiğiniz komutu çalıştırdım ama yine de aynı yanıtı aldım. Tcpdump ı eth0 ve tun0 üzerinde çalıştırdım. paketler eth0'a yönlendirilmez. tun0 hala google'a ulaşmaya çalışıyor. Bir şekilde tun0'dan eth0'a paketleri yönlendirmem gerekiyor mu?
Ali

1
Yerel makine internete bağlanmak için eth0 arabirimini kullanıyorsa, paketler bu komut olmadan da eth0'a gitmelidir. Bu yüzden belki bazı güvenlik duvarı ayarları söz konusudur. iptables-saveYerel makinenin çıktısını koyabilir misiniz ?
reith

Iptables-save çıktısını orijinal gönderiye ekledim.
Ali

Firewalld kapatılması gerekiyordu. Firewalld'i kapattıktan sonra komutunu çalıştırdım ve bağlantı çalışmaya başladı! Yardımınıza minnettar olurum! İlerleme durumunu görmek için orijinal yayında bulunan Notlar.
Ali

1
aferin. Sorun iptable kuralı gibi görünüyor -A FORWARD -j REJECT --reject-with icmp-host-prohibited. makinenize gelen ve hedef adresi makinenizden çıkan paketler İLERİ zincirine gidecektir, bu yüzden bu kuralı bırakın.
reith
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.