Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: Xoly 10. 04. 2020, 17:10:11
-
Ahoj, potřeboval bych poradit nebo aspoň trochu navést. Mám doma pc s Debianem 10 a v něm 4 síťovky. Jedna je na desce a ty další tři jsou dokupované. A já bych potřeboval, aby ten počítač sloužil jako takový silnější router, s tím, že by na tom běžely ještě jinačí aplikace, které už si nastavím sám, ale s totím si nevím rady. Na internetu je hodně návodů, ale nikde není pořádně popsané proč se to píše vlastně takhle a co filtrovat a co ne a nevím co všechno ještě. Potřeboval bych, aby ty lokální sítě, které jsou 192.168.2.0/24, 192.168.12.0/24 a 192.168.2.22/24 měly přístup do internetu skrz tu síťovku integrovanou na základní desce. Nebudu tady sdělovat veřejnou IP adresu, ale pro příklad by to mohlo být třeba 10.20.30.40. Taky by nebylo špatné, kdyby ty tři lokální sítě měly přístup i navzájem do sebe.
Nezná tady někdo prosím nějaký návod na internetu, popřípadě by byl ochotný mi nějak poradit? Byl bych mu moc vděčný. Předem děkuju moc.
-
Konfigurak pro nftables s 5 interfacy, enp1s0 je brana ven, na nem se dela maskarada. Enp2-4s0 je vnitri sit, wlp5s0 je wifi v mPCIe. Pak jeste povolit v sysctl ipv4_forwarding a melo by to fungovat. Forward mezi interfacy vnitri site mam jako accept, aby stroje v siti 172.16.0.0/12 mohly mezi sebou komunikovat. Ven mam povolene 22, 80, 443 stavovym firewallem:
#!/sbin/nft -f
# vim: ft=pf
### FLUSH RULESET
flush ruleset
### SERVERs
define IPV4_LOCAL = { 172.16.0.0/12 }
table ip filter {
chain input {
type filter hook input priority 0; policy drop;
counter comment "count input accepted packets"
### DROP
### State firewall
iifname enp1s0 ct state invalid counter log prefix "DROP INVALID: " drop comment "early drop of invalid packets"
iifname enp1s0 ct state established,related counter accept comment "accept all connections related to connections made by us"
iifname enp2s0 accept comment "accept all"
iifname enp3s0 accept comment "accept all"
iifname enp4s0 accept comment "accept all"
iifname wlp5s0 accept comment "accept all"
### Loopback interface
iifname lo accept comment "accept loopback"
iifname != lo ip daddr 127.0.0.1/8 counter drop comment "drop connections to loopback not coming from loopback"
### Icmp
ip protocol icmp counter limit rate 3600/hour burst 1200 packets log prefix "ACCEPT ICMP: " accept comment "accept all ICMP types"
### Allow LOCAL
ip saddr $IPV4_LOCAL counter log prefix "ACCEPT LOCAL: " accept comment "connections comming from LOCAL servers"
### Allow INET access
tcp dport 22 ct state new counter limit rate 6/minute burst 3 packets log prefix "ACCEPT SSH to port 22: " accept comment "connections via SSH"
tcp dport 80 ct state new counter log prefix "ACCEPT HTTP to port 80: " accept comment "connections via HTTP"
tcp dport 443 ct state new counter log prefix "ACCEPT HTTPS to port 443: " accept comment "connections via HTTPS"
}
chain forward {
type filter hook forward priority 0; policy accept;
counter comment "count forward dropped packets"
}
chain output {
type filter hook output priority 0; policy accept;
counter comment "count output accepted packets"
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "enp0s1" masquerade
}
}
a pak:
nft -f /path/konfigurak.nft
-
Děkuju moc, zkusím se toho nějak chytit :)
-
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "enp0s1" masquerade
}
}
Akorát, nemělo by tady být v tom posledním řádku tohle?
oifname "enp1s0" masquerade
Ty tam máš enp0s1
-
Jj sry melo, mel by tam byt interface pres ktery delas NAT, takze interface, na kterem je brana ven.
-
Ahoj, ozývám se po delší době, ale teď jsem se k tomu až dostal. Zkusil jsem vzít to tvoje nastavení a přepsat to na moje interfacy, s tím, že jsem ještě změnil tu IPV4_LOCAL proměnnou, ale nejsem si jistý, jestli dobře. Potom v /etc/sysctl.conf jsem nastavil net.ipv4.ip_forward=1. Na těch interfacích mám nastavené pevné ip adresy, akorát ten wan mám teď připojený normálně do sítě, co mám v pokoji za routerem na DHCP. V tom pc můžu normálně pingovat ty síťovky, ale když jsem vzal druhý router a nastavil mu wan třeba na 192.168.2.200 a připojil ho na tu síťovku, která má adresu 192.168.2.254, tak mi na tom routeru nejde internet a nejde mi to z pc ani pingnout. Věděl by jsi proč? Tu síťovku v pc mám nastavenou takhle:
IP: 192.168.2.254
Maska: 255.255.255.0
Brána: 192.168.2.254
DNS: 192.168.2.254
Nejsem si jistý, jestli by neměla být váchozí brána právě ten interface, který je jako wan a momentálně je připojený do té moji sítě v pokoji. To samé DNS.
-
Takze to s jednim routrem funguje a s druhym, ne? Co mas odlisne? Masquaradou bys mel predavat pakety z jednoho segmentu site do druheho, napr. z 192.168.y.y do 10.y.y.y apod. Vypis nam teda, co mas v tom nft konfiguraku a co mas v /etc/network/interfaces (pokud mas Debian like based distro).
-
V nft konfiguráku mám tohle:
#!/usr/sbin/nft -f
# vim: ft=pf
### FLUSH RULESET
flush ruleset
### SERVERs
define IPV4_LOCAL = { 192.168.0.0/14 }
table inet filter {
chain input {
type filter hook input priority 0; policy drop;
counter comment "count input accepted packets"
### DROP
### State firewall
iifname eno1 ct state invalid counter log prefix "DROP INVALID: " drop comment "early drop of invalid packets"
iifname eno1 ct state established, related counter accept comment "accept all connections related to conections made by us"
iifname enp4s0 accept comment "accept all"
iifname enp5s0 accept comment "accept all"
iifname enp7s0 accept comment "accept all"
### loopback interface
iifname lo accept comment "accept loopback"
iifname != lo ip daddr 127.0.0.1/8 counter drop comment "drop connections to loopback not comming from loopback"
### Icmp
ip protocol icmp counter limit rate 3600/hour burst 1200 packets log prefix "ACCEPT ICMP: " accept comment "accept all ICMP types"
### Allow LOCAL
ip saddr $IPV4_LOCAL counter log prefix "ACCEPT LOCAL: " accept comment "connection from LOCAL servers"
### Allow INET access
tcp dport 22 ct state new counter limit rate 6/minute burst 3 packets log prefix "ACCEPT SSH to port 22: " accept comment "connection via SSH"
tcp dport 80 ct state new counter log prefix "ACCEPT HTTP to port 80: " accept comment "connection via HTTP"
tcp dport 443 ct state new counter log prefix "ACCEPT HTTPS to port 443: " accept comment "connection via HTTPS"
}
chain forward {
type filter hook forward priority 0; policy accept;
counter comment "count forward dropped packets"
}
chain output {
type filter hook output priority 0; policy accept;
counter comment "count output accepted packets"
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "eno1" masquerade
}
}
V interfaces mám tohle:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
No ale nakonec, jak jsem dal ten pc do pokoje za router, tak jsem si neuvědomil, že mi na tom routeru chybí routa, protože za ním je další router a až ten má přístup do internetu. Takže jsem udělal routu a vyřešila se část problému. Můžu teď pingovat skrz ty sítě jak chci, ať je to jedna síťovka v pc, druhá nebo ta třetí, čtvrtou zapojenou teď nemám. Můžu taky pingovat třeba dns googlu 8.8.8.8 nebo jinačí adresy. Problém ale nastává, když chci pingnout třeba google.cz. Někde se mi zastaví dns a už to nefunguje.
Síťovku eno1 jsem teda připojit do pokoje na router a nechal na ní DHCP.
Druhou síťovku enp4s0 jsem nastavil na:
ip adresu 192.168.18.254
s maskou 255.255.255.0
brána a dns je prázdné.. dns se tím pádem nastavilo asi na 0.0.0.0
Třetí síťovku enp5s0 sem nastail na:
ip adresu 192.168.20.254
s maskou 255.255.255.0
brána a dns zase prázdné
Na tu druhou jsem si přes switch, protože nemám křížený kabel připojil noťas a dal mu:
ip adresu 192.168.18.5
s maskou 255.255.255.0
a bránou a dns 192.168.18.254
Na třetí síťovku jsem dal router, jenom abych zkusil ten ping atd..
No a ten zlom nastane, když na noťasu změním dns z 192.168.18.254 třeba na 8.8.8.8. Potom mi normálně funguje internet, ale předtím, než to změním, mi funguje jenom pingování ip adres, protože ten dns má nějaký problém no..
-
No a ten zlom nastane, když na noťasu změním dns z 192.168.18.254 třeba na 8.8.8.8. Potom mi normálně funguje internet, ale předtím, než to změním, mi funguje jenom pingování ip adres, protože ten dns má nějaký problém no..
Protoze klient nevi, kam ma smerovat DNS, nejspis ze nastavujes vse manualne. Pokud bys na klentovi, ktery se k tomu pripojuje nastavil v NetworkManageru, nebo do /etc/resolv.conf DNS googlu ("nameserver 8.8.8.8") fungovat to bude.
Byt tebou, nastavil bych to cele pomoci DHCP. To pak samo preda klientum informaci o brane a spravny dns server. Osobne to mam nastavene s Dnsmasq (prislo mi to na konfiguraci asi nejjednodussi).
/etc/nftables.nft
#!/sbin/nft -f
# vim: ft=pf
### FLUSH RULESET
flush ruleset
### SERVERs
define IPV4_LOCAL = { 172.16.0.0/12 }
table ip filter {
chain input {
type filter hook input priority 0; policy drop;
counter comment "count input accepted packets"
### DROP
### State firewall
iifname enp0s9 ct state invalid counter log prefix "DROP INVALID: " drop comment "early drop of invalid packets"
iifname enp0s9 ct state established,related counter accept comment "accept all connections related to connections made by us"
iifname enp0s10 accept comment "accept all"
iifname enp0s11 accept comment "accept all"
iifname wlp0s12 accept comment "accept all"
### Loopback interface
iifname lo accept comment "accept loopback"
iifname != lo ip daddr 127.0.0.1/8 counter drop comment "drop connections to loopback not coming from loopback"
### Icmp
ip protocol icmp counter limit rate 3600/hour burst 1200 packets log prefix "ACCEPT ICMP: " accept comment "accept all ICMP types"
### Allow LOCAL
ip saddr $IPV4_LOCAL counter log prefix "ACCEPT LOCAL: " accept comment "connections comming from LOCAL servers"
### Allow INET access
tcp dport 22 ct state new counter limit rate 6/minute burst 3 packets log prefix "ACCEPT SSH to port 22: " accept comment "connections via SSH"
tcp dport 80 ct state new counter log prefix "ACCEPT HTTP to port 80: " accept comment "connections via HTTP"
tcp dport 443 ct state new counter log prefix "ACCEPT HTTPS to port 443: " accept comment "connections via HTTPS"
}
chain forward {
type filter hook forward priority 0; policy accept;
counter comment "count forward dropped packets"
}
chain output {
type filter hook output priority 0; policy accept;
counter comment "count output accepted packets"
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority 0;
}
chain postrouting {
type nat hook postrouting priority 100;
oifname "enp0s9" masquerade
}
}
V interfaces mam nastavene staticke adresy na interfacech, ktere delaji brany. Pres "up" se nastavi take ten FW:
/etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# ETH0
auto enp0s9
iface enp0s9 inet dhcp
up nft -f /etc/nftables.nft
#up sleep 3 && dhclient enp0s9 >/dev/null
# ETH1
auto enp0s10
iface enp0s10 inet static
address 172.30.1.1
netmask 255.255.255.0
# ETH2
auto enp0s11
iface enp0s11 inet static
address 172.30.2.1
netmask 255.255.255.0
# WIFI
auto wlp0s12
iface wlp0s12 inet static
address 172.30.9.1
netmask 255.255.255.0
Pak to vypada takhle, "ip a s". Ta adresa 192.168.1.152 je ip od poskytovatele netu z anteny na strese, ziskana pres dhcp:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0d:b9:20:43:04 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.152/24 brd 192.168.1.255 scope global dynamic enp0s9
valid_lft 580sec preferred_lft 580sec
inet6 fe80::20d:b9ff:fe20:4304/64 scope link
valid_lft forever preferred_lft forever
3: enp0s10: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:0d:b9:20:43:05 brd ff:ff:ff:ff:ff:ff
inet 172.30.1.1/24 brd 172.30.1.255 scope global enp0s10
valid_lft forever preferred_lft forever
inet6 fe80::20d:b9ff:fe20:4305/64 scope link
valid_lft forever preferred_lft forever
4: enp0s11: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN group default qlen 1000
link/ether 00:0d:b9:20:43:06 brd ff:ff:ff:ff:ff:ff
inet 172.30.2.1/24 brd 172.30.2.255 scope global enp0s11
valid_lft forever preferred_lft forever
5: wlp0s12: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether d4:ca:6d:14:49:78 brd ff:ff:ff:ff:ff:ff
inet 172.30.9.1/24 brd 172.30.9.255 scope global wlp0s12
valid_lft forever preferred_lft forever
inet6 fe80::d6ca:6dff:fe14:4978/64 scope link
valid_lft forever preferred_lft forever
No a hlavni "magic" mi tam dela Dnsmasq. Napr. klient pripojeny pres wifi na interface wlp0s12 se zepta na adresu, z dhcp obdrzi nejakou z poolu 172.30.9.200,172.30.9.249 na 10 minut. Na klientovi se automaticky nastavi i /etc/resolv.conf (kde je "nameserver 172.30.9.1"). Takze pokud klient nezna nejake dns jmeno, zepta se 172.30.9.1. Zde je dnsmasq, ktery se dopta "199.85.126.30" a vrati uz znamou adresu klientovi. V /etc/dnsmasq.conf a /etc/dnsmasq.hosts, mam definovane i staticke dns zaznamy, takze nemusism pingovat jen pres adresy, ale muzu i pres dns jmena.
/etc/dnsmasq.conf
#------------------#
# Static Hosts #
#------------------#
dhcp-host=44:98:0E:35:F7:38 ,pc0 ,172.30.2.10 ,24h # staticke zaznamy, pokud potrebuji, a nechci pridelovat jen dynamicky z DHCP
dhcp-host=00:23:dc:6b:60:43 ,pc1 ,172.30.2.11 ,24h
dhcp-host=11:db:f4:0f:22:23 ,pc2 ,172.30.2.12 ,24h
#--------------------#
# Basic settings #
#--------------------#
except-interface=enp0s9
domain=mojedomena.cz
expand-hosts
domain-needed
bogus-priv
no-resolv
no-poll
no-hosts
#-----------------#
# DNS Servers #
#-----------------#
all-servers
server=199.85.126.30 # servery, ze kterych bery DNS, klidne taky muzes mit 8.8.8.8
server=199.85.127.30
server=208.67.222.123
server=208.67.220.123
#-----------------#
# DNS Options #
#-----------------#
dhcp-authoritative
dhcp-option=option:domain-search,mojedomena.cz
addn-hosts=/etc/dnsmasq.hosts
#-------------------#
# Dynamic Hosts #
#-------------------#
# ETH1:
dhcp-range=172.30.1.200,172.30.1.249,255.255.255.0,10m # tady prideluju DHCP adresy, podle interace, na vsech mam DHCP
# ETH2:
dhcp-range=172.30.2.200,172.30.2.249,255.255.255.0,10m
# WIFI:
dhcp-range=172.30.9.200,172.30.9.249,255.255.255.0,10m
/etc/dnsmasq.hosts
172.31.2.10 pc0 pc0.mojedomena.cz
172.31.2.11 pc1 pc1.mojedomena.cz
172.31.2.12 pc2 pc2.mojedomena.cz
-
Tak nainstaloval jsem ten balíček dnsmasq a trochu to pročetl.. Nakonec jsem ho nechal takhle:
domain-needed
bogus-priv
no-resolv
no-poll
except-interface=eno1
no-dhcp-interface=eno1
no-hosts
A všechno se to rozběhlo, tak jak má, i bez DHCP. Děkuju moc..
Ještě musím nějak projít přesměrování portů, to se taky děla asi v nftables že?
A potom nějaký program na sledování využití podle ip adres.. Něco jak je třeba BitMeter II nebo něco na ten způsob.. Už si nemůžu vzpomenout na ten jeden program, který jsem kdysi viděl. Byly to zelené grafy, které se daly zobrazit přes html, když jsem vyhledal tu adresu 192.168.2.254 a na každé stránce jich bylo několik.
-
A když se na to ještě tak dívám, tak tam ten řádek
no-dhcp-interface=eno1
nemusí být, protože dhcp tam nikde nepoužívám.
-
Nastavil jsem ty porty takhle, tak doufám, že je to dobře..
#Server
tcp dport 10070 dnat to 192.168.2.220:10070
udp dport 10070 dnat to 192.168.2.220:10070
tcp dport 10071 dnat to 192.168.2.220:10071
udp dport 10071 dnat to 192.168.2.220:10071
tcp dport 10072 dnat to 192.168.2.220:10072
udp dport 10072 dnat to 192.168.2.220:10072
#Matusik
tcp dport 10000 dnat to 192.168.2.164:10000
udp dport 50 dnat to 192.168.2.164:10050
udp dport 51 dnat to 192.168.2.164:10051
udp dport 500 dnat to 192.168.2.164:10052
udp dport 4500 dnat to 192.168.2.164:10053
tcp dport 5446 dnat to 192.168.2.164:10054
udp dport 5446 dnat to 192.168.2.164:10054
tcp dport 80 dnat to 192.168.2.164:10055
#Petr GameRanger
tcp dport 16000 dnat to 192.168.2.168:16000
udp dport 16000 dnat to 192.168.2.168:16000
Vždycky ten vlevo je veřejný port a ten vpravo privátní.