Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[iptables] Przekierowanie ruchu z jednego interfejsu na drugi

19 Wrz 2015 20:19 1491 9
  • Poziom 10  
    Witam.

    Potrzebuję:
    mam dwa interfejsy sieciowe - z modemu USB huawei E3131: wwp0s20u11i1 oraz wewnętrznej karty sieciowej: enp5s1.

    Wszystkie interfejsy przedstawiają się następująco:
    Code:

    enp5s1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.0.100  netmask 255.255.255.0  broadcast 192.168.0.255
            inet6 fe80::a8a0:fd0c:35ea:c4da  prefixlen 64  scopeid 0x20<link>
            ether c0:4a:00:03:85:5b  txqueuelen 1000  (Ethernet)
            RX packets 23662  bytes 14961245 (14.2 MiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 21435  bytes 2757960 (2.6 MiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 0  (Local Loopback)
            RX packets 20  bytes 1256 (1.2 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 20  bytes 1256 (1.2 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    ppp0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1500
            inet 31.1.251.8  netmask 255.255.255.255  destination 10.64.64.64
            ppp  txqueuelen 3  (Point-to-Point Protocol)
            RX packets 7  bytes 106 (106.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 8  bytes 154 (154.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

    wwp0s20u11i1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 169.254.220.79  netmask 255.255.0.0  broadcast 169.254.255.255
            inet6 fe80::e5bb:3e20:f92c:a94a  prefixlen 64  scopeid 0x20<link>
            ether 5a:b0:f4:15:2d:eb  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 104  bytes 39711 (38.7 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


    Mam fajnie zbudowane (jak mi się zdaje) regułki iptables dla enp5s1 (z wewnętrznej karty sieciowej) które chciałbym wykrzystać również dla modemu huaweia: wwp0s20u11i1 (tu przez dostawcę PLUSA IP jest zmienne)

    Pytanie: Jak powinny wyglądać regułki dla przekierowania takiego ruchu sieciowego (lub jak inaczej w prosty sposób to rozwiązać)?

    Dodam, że enp5s1 pochodzi z routera.
  • Specjalista Sieci, Internet
    Jak enp i wwp nie aktywne jednocześnie to w konfiguracji iptables użyj zmiennej wan= zamiast enp, wwp.

    Jak enp i wwp aktywne jednocześnie to wrzuć schemat i opisz dokładnej co chcesz osiągnąć.
  • Poziom 43  
    numer_inaczej napisał:
    Mam fajnie zbudowane (jak mi się zdaje) regułki iptables


    Pokaż to oraz:
    Code:
    iptables -L
  • Poziom 10  
    cat /etc/conf.d/iptables:
    Code:

    # /etc/conf.d/iptables

    # Location in which iptables initscript will save set rules on
    # service shutdown
    IPTABLES_SAVE="/var/lib/iptables/rules-save"

    # Options to pass to iptables-save and iptables-restore
    SAVE_RESTORE_OPTIONS="-c"

    # Save state on stopping iptables
    SAVE_ON_STOP="yes"

    WAN="enp5s1"

    # Czyszczę reguły
    iptables -F
    iptables -X

    # Ustawiam domyślną politykę
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT ACCEPT

    # coś takiego bym chciał osiągnąć, tylko operując na stałych interfejsach, nie zmiennych IP
    #iptables -A FORWARD -i ppp0 -s 196.254.220.79 -o $WAN -j ACCEPT
    #iptables -A POSTROUTING -t nat -s 196.254.220.79 -o $WAN -j MASQUERADE

    # dzielenie pakietów
    iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

    # Blokuję nieprawidłowe pakiety
    iptables -A INPUT -i $WAN -m conntrack --ctstate INVALID -j LOG --log-prefix "INPUT DROP INVALID" --log-ip-options --log-tcp-options
    iptables -A INPUT -i $WAN -m conntrack --ctstate INVALID -j DROP

    # Dopuszczam ruch na interfejsie lokalnym
    iptables -A INPUT -i lo -j ACCEPT

    # Dopuszczam do ruchu połączenia już nawiązane i powiązane
    iptables -A INPUT -i $WAN -p tcp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i $WAN -p udp -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

    # Dopuszczam ruch przychodzący
    iptables -A INPUT -i $WAN --protocol tcp --destination-port 80 -m limit --limit 1/s -j ACCEPT

    # Wszystkie niepasujące zostaną odnoto$WANe w LOGach
    #iptables -A INPUT -i $WAN -j LOG --log-prefix "INPUT DROP" --log-ip-options --log-tcp-options
    #iptables -A INPUT -j LOG -m limit --limit 1/hour

    #SSH
    iptables -A INPUT -i $WAN --protocol tcp -s 192.168.0.104 --destination-port ssh -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i $WAN --protocol tcp -s 192.168.0.103 --destination-port ssh -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i $WAN --protocol tcp -s 192.168.0.101 --destination-port ssh -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o $WAN --protocol tcp --sport ssh -m conntrack --ctstate ESTABLISHED -j ACCEPT

    #RSYNC
    #iptables -A INPUT -i $WAN --protocol tcp -s 192.168.0.102 --destination-port 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A INPUT -i $WAN --protocol tcp -s 192.168.0.102 --destination-port 873 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    iptables -A OUTPUT -o $WAN --protocol tcp --sport 873 -m conntrack --ctstate ESTABLISHED -j ACCEPT

    ## SAMBA ## z windowsa pobierasz MACADRESS poleceniem getmac → adres fizyczny → zamień - na :
    #Akcepto$WANie połączeń na port udp 137 z sieci lokalnej
    # Włodek
    iptables -I INPUT -m mac --mac-source 00:16:EA:99:A8:5E --protocol udp -m multiport --destination-ports 137,138 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    # laptop
    iptables -I INPUT -m mac --mac-source b8:ee:65:15:7b:78 --protocol udp -m multiport --destination-ports 137,138 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

    #Akcepto$WANie połączeń na port tcp 139,445 z sieci lokalnej
    # Włodek
    iptables -I INPUT -m mac --mac-source 00:16:EA:99:A8:5E --protocol tcp -m multiport --destination-ports 139,445 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
    # laptop
    iptables -I INPUT -m mac --mac-source b8:ee:65:15:7b:78 --protocol tcp -m multiport --destination-ports 139,445 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

    ## FTP ##
    # Akcepto$WANie połączeń na port tcp 21 z sieci lokalnej
    iptables -I INPUT -i $WAN --protocol tcp --destination-port 21  -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT



    oraz

    gentoo numer # iptables -L:
    Code:

    Chain INPUT (policy DROP)
    target     prot opt source               destination         
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ftp ctstate NEW,ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere             MAC B8:EE:65:15:7B:78 multiport dports netbios-ssn,microsoft-ds ctstate NEW,ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere             MAC 00:16:EA:99:A8:5E multiport dports netbios-ssn,microsoft-ds ctstate NEW,ESTABLISHED
    ACCEPT     udp  --  anywhere             anywhere             MAC B8:EE:65:15:7B:78 multiport dports netbios-ns,netbios-dgm ctstate NEW,ESTABLISHED
    ACCEPT     udp  --  anywhere             anywhere             MAC 00:16:EA:99:A8:5E multiport dports netbios-ns,netbios-dgm ctstate NEW,ESTABLISHED
    LOG        all  --  anywhere             anywhere             ctstate INVALID LOG level warning tcp-options ip-options prefix "INPUT DROP INVALID"
    DROP       all  --  anywhere             anywhere             ctstate INVALID
    ACCEPT     all  --  anywhere             anywhere           
    ACCEPT     tcp  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    ACCEPT     udp  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http limit: avg 1/sec burst 5
    ACCEPT     tcp  --  192.168.0.104        anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
    ACCEPT     tcp  --  192.168.0.103        anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
    ACCEPT     tcp  --  192.168.0.101        anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED
    ACCEPT     tcp  --  192.168.0.102        anywhere             tcp dpt:rsync ctstate NEW,ESTABLISHED

    Chain FORWARD (policy DROP)
    target     prot opt source               destination         
    TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU

    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    ACCEPT     tcp  --  anywhere             anywhere             tcp spt:ssh ctstate ESTABLISHED
    ACCEPT     tcp  --  anywhere             anywhere             tcp spt:rsync ctstate ESTABLISHED


    @bogiebog - możesz nieco rozwinąć swoją myśl jeszcze.
    zrobiłem tak:
    Code:

    WAN="ppp0, enp5s1"

    - co ułatwia edycję pliku, jednak dwu różnych interfejsów dla jedej i tej samej reguły wyrzuca mi błędy.

    @jurek.adam
    Code:

    # coś takiego bym chciał osiągnąć, tylko operując na stałych interfejsach, nie zmiennych IP
    #iptables -A FORWARD -i ppp0 -s 196.254.220.79 -o $WAN -j ACCEPT
    #iptables -A POSTROUTING -t nat -s 196.254.220.79 -o $WAN -j MASQUERADE

    Powyższe podpatrzone ostatnio w internecie spisuje się dobrze, ale tylko przy stałym IP, jeśli wyjmę i włożę na nowo modem huaweia to zmienia mi się IP i wszystko psu na budę.
    Spróbuję z MAC jeszcze.

    Generalnie próbuję się dopasować do różnej sytuacji, gdzie w domu bym chciał korzystać z wi-fi lub po kablu, w szkole poprzez router na wi-fi natomiast na innych zajęciach tylko aero2 (karty mi jeszcze nie przysłano, stąd próbuję to ogarnąć na PLUSie).
  • Pomocny post
    Specjalista Sieci, Internet
    numer_inaczej napisał:
    WAN="ppp0, enp5s1"


    Musisz zrobić detekcje interfejsu i ip adresu

    if test-na-pp
    WAN=ppp0
    IP=...
    else if costam
    WAN=enp
    IP=...
    ....
  • Poziom 10  
    bogiebog - działa.
    Powiedz mi - patrząc na mój plik konfiguracyjny iptables - czy na sprawę bezpieczeństwa ma to znaczenie podczas gdy będę korzystał np. z aero2 a mam otwarte porty dla LANu (np. rsynk, czy sambę) ze zmienionym interfejsem ?

    Mi się zdaje, że nie - ale dopiero uczę się sieci.
  • Pomocny post
    Poziom 43  
    numer_inaczej napisał:
    czy na sprawę bezpieczeństwa ma to znaczenie podczas gdy będę korzystał np. z aero2 a mam otwarte porty dla LANu (np. rsynk, czy sambę) ze zmienionym interfejsem ?


    Ważne co masz otwarte od strony WAN, czyli co widać z internetu, bo tędy można się wbić jeśli coś nasłuchuje na danym porcie. Sprawdź sobie:

    Code:
    netstat -6 --ip -n -a -p adres_IP_WAN
    
    netstat -anp --udp --tcp
  • Specjalista Sieci, Internet
    Filtrowanie ip powinny być takie same bez wzlgędu na to czy masz WAN ppp czy eth czy wifi czy dhcp czy adsl czy inne.
  • Poziom 10  
    Tak więc jak zrozumiałem, w chwili gdy odłączę się od mojej sieci i będę w szkole korzystał z aero2 (bezpłatny internet) - adresy którym udostępniam usługi sieciowe w domu nie będą narażone na ataki, do czasu przyłączenia do innej sieci.
    Czyli bezpieczniej jest kierować ruch na MAC adres, czy tak?
  • Poziom 10  
    Zatem nie pozostaje mi nic innego jak tylko podziękować za pomoc.
    Podziękował!