İş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 68
bir 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 80
aş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 ..........