Internet Connection Sharing

Материал из poiuty wiki
Перейти к: навигация, поиск

ETH0 - интернет. ETH1 - локальная сеть.

internet => ETH0 => ETH1 => SWITCH => home.net

Редактируем /etc/sysctl.conf

net.ipv6.conf.default.forwarding = 1
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.default.forwarding=1
net.ipv4.conf.all.forwarding=1
net.ipv4.ip_forward=1

Чтобы настройки вступили в силу => выполним команду.

sysctl -p

Внимание!!! Не делайте такое правило. Иначе вы будете раздавать интернет соседям по свитчу.

iptables -t nat -A POSTROUTING -j MASQUERADE

Добавим правило в iptables + добавьте его в файл /etc/rc.local (до exit 0)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -P FORWARD DROP
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -j LOG --log-prefix "FORWARD:DROP:"

Логируем (в файл /var/log/syslog) тех кто пытается использовать наш хост в качестве gateway

Feb 29 13:02:25 debian kernel: [78689.914162] FORWARD:DROP:IN=eth0 OUT=eth0 MAC=xxx SRC=10.251.251.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=3 ID=50160 PROTO=ICMP TYPE=8 CODE=0 ID=45372 SEQ=60644 
Feb 29 13:02:26 debian kernel: [78690.039322] FORWARD:DROP:IN=eth0 OUT=eth0 MAC=xxx SRC=10.251.251.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=4 ID=50169 PROTO=ICMP TYPE=8 CODE=0 ID=41543 SEQ=46211 
Feb 29 13:02:26 debian kernel: [78690.081515] FORWARD:DROP:IN=eth0 OUT=eth0 MAC=xxx SRC=10.251.251.2 DST=8.8.8.8 LEN=64 TOS=0x00 PREC=0x00 TTL=4 ID=50178 PROTO=ICMP TYPE=8 CODE=0 ID=45372 SEQ=60900

Отредактируем файл /etc/network/interfaces

auto lo eth0 eth1
iface lo inet loopback
iface eth0 inet dhcp
iface eth1 inet static
	address 192.168.0.1
	netmask 255.255.255.0

Перезагрузим сеть.

/etc/init.d/networking restart

Если вы не планируете настраивать DHCP -> то в настройках подключения указывайте статический IP (client side), например

auto lo eth0
iface lo inet loopback
iface eth0 inet static
	address 192.168.0.2
	netmask 255.255.255.0
	gateway 192.168.0.1

Если хочется использовать DHCP => установим dnsmasq.

apt-get install dnsmasq

Отредактируем файл /etc/dnsmasq.conf

interface=eth1
listen-address=192.168.0.1
bind-interfaces
domain=linux.lan
dhcp-range=192.168.0.2,192.168.0.254,255.255.255.0,24h
dhcp-option=3,192.168.0.1
dhcp-option=1,255.255.255.0

Bridge

В моем случае, на сервере работают kvm vm => сеть через мост.
Например моего /etc/network/interfaces

auto lo eth0 eth1 br0
iface lo inet loopback

iface eth0 inet dhcp
iface eth1 inet manual
iface br0 inet static
	address 192.168.0.1
	netmask 255.255.255.0
	bridge_ports eth1
	bridge_stp off
	bridge_fd 0
	bridge_maxwait 0

В /etc/dnsmasq.conf указываем

interface=eth1

Other

Как поменять mac адрес сетевой карты.

iface eth0 inet dhcp
	hwaddress ether 00:00:00:00:00:00

Как вернуть OpenWRT к начальной конфигурации? (после этого нужно установить root пароль)

rm -rf /overlay/*
sync 
reboot

Как перезаписать dns (полученные по dhcp) => редактируем файл /etc/dhcp/dhclient.conf

interface "eth0" {
    supersede domain-name-servers 8.8.8.8, 8.8.4.4;
}

Как разрешить коннекты к ssh и luci (OpenWRT)? => редактируем /etc/config/firewall

config rule                                     
        option 'src' 'wan'                      
        option 'dest_port' '22'                 
        option 'target' 'ACCEPT'                
        option 'proto' 'tcp'                    
                                                
config rule                                     
        option 'src' 'wan'                      
        option 'dest_port' '80'                 
        option 'target' 'ACCEPT'                
        option 'proto' 'tcp'

DHCP не отдает адрес, arp -n показывает => (incomplete)
В логах клиента => dhcpd: 5 bad udp checksums in 5 packets
На host - добавляем правило.

iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill

Как собрать dnsmasq из исходников с определенными опциями?

make all COPTS='-DHAVE_DNSSEC -DHAVE_DNSSEC_STATIC -DHAVE_DBUS'

Посмотреть какие IP выданы.

cat /var/lib/misc/dnsmasq.leases

Мои правила, например.

# Enable loopback traffic
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Enable statefull rules (after that, only need to allow NEW conections)
iptables -A INPUT   -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# Drop invalid state packets
iptables -A INPUT   -m conntrack --ctstate INVALID -j DROP
iptables -A OUTPUT  -m conntrack --ctstate INVALID -j DROP
iptables -A FORWARD -m conntrack --ctstate INVALID -j DROP

# allow dhcp [IN=br0 OUT= PHYSIN=eth1 SRC=0.0.0.0 DST=255.255.255.255 LEN=328 TOS=0x10 PREC=0x00 TTL=128 ID=0 PROTO=UDP SPT=68 DPT=67 LEN=308]
iptables -A INPUT -i br0 -s 0.0.0.0 -d 255.255.255.255 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Incoming connections from the LAN
iptables -A INPUT -i br0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

# allow dhcp [IN= OUT=br0 SRC=192.168.0.1 DST=192.168.0.2 LEN=331 TOS=0x00 PREC=0xC0 TTL=64 ID=5597 PROTO=UDP SPT=67 DPT=68 LEN=311]
iptables -A OUTPUT -o br0 -s 192.168.0.1 -d 192.168.0.0/24 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Enable al outgoing traffic to internet
iptables -A OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT

# FORWARD
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -o eth0 -i br0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

# allow connect to kvm vm (on host) [IN=br0 OUT=br0 PHYSIN=eth1 PHYSOUT=vnet1 SRC=192.168.0.101 DST=192.168.0.7 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=7495 DF PROTO=TCP SPT=52808 DPT=20002 WINDOW=29200 RES=0x00 SYN URGP=0]
iptables -A FORWARD -o br0 -i br0 -s 192.168.0.0/24 -m conntrack --ctstate NEW -j ACCEPT

# dhcpd: 5 bad udp checksums in 5 packets (fix)
iptables -A POSTROUTING -t mangle -p udp --dport bootpc -j CHECKSUM --checksum-fill

Wifi

# 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 br0 eth0

# local
iface lo inet loopback

# main
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet manual

allow-hotplug eth1
iface eth1 inet manual

# Setup bridge 
iface br0 inet static
    bridge_ports wlan0 eth1
    address 192.168.1.1
    netmask 255.255.255.0
    bridge_stp off
    bridge_fd 0
    bridge_maxwait 0
interface=wlan0

bridge=br0

driver=nl80211

hw_mode=g

channel=1

ssid=12345
wpa=2
wpa_passphrase=poiuty12345
wpa_key_mgmt=WPA-PSK
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.conf.default.forwarding=1