linux 如何連網,且與其餘網絡的主機怎樣通訊?linux
解決方案一:ip命令:ip [ OPTIONS ] OBJECT { COMMAND | help } 服務器
OBJECT := { link | addr | route | netns }
網絡
改變設備接口的屬性 ip link set dev NAME (default) socket
注:指明要管理的設備,dev關鍵字可省略;tcp
up和down:ide
multicast on或multicast off:啓用或禁用多播功能;測試
name NAME:重命名接口ui
tu NUMBER:設置MTU的大小,默認爲1500;url
netns NAME:ns爲namespace,用於將接口移動到指定的網絡名稱空間;spa
顯示設備的屬性 ip link show 能夠指定顯示某個設備的屬性
管理網絡名稱空間 ip netns list:列出全部的netns
ip netns add NAME:建立指定的netns
ip netns del NAME:刪除指定的netns
ip netns exec NAME COMMAND:在指定的netns中運行命令
增長ip地址 ip addr add IFADDR dev IFACE
[label NAME]:爲額外添加的地址指明接口別名;
[broadcast ADDRESS]:廣播地址;會根據IP和NETMASK自動計算獲得;
[scope SCOPE_VALUE]:global:全局可用;link:接口可用;
刪除ip地址 ip addr delete IFADDR dev IFACE
顯示接口的ip地址 ip addr list [IFACE]:顯示接口的地址;
清除接口的全部ip地址 ip addr flush dev IFACE
爲主機新增路由條目 ip route add TYPE PREFIX via GW [dev IFACE] [src SOURCE_IP]
示例:# ip route add 192.168.0.0/24 via 10.0.0.1 dev eth1 src 10.0.20.100
# ip route add default via GW
爲主機刪除路由條目 ip route del TYPE PRIFIX
示例:# ip route delete 192.168.1.0/24
顯示網絡接口的路由條目 ip route show
清空本機網絡接口的路由條目 ip route flush
ip route get TYPE PRIFIX
示例:ip route get 192.168.0.0/24
注:以上均是命令行下配置,可以立刻生效。重啓後會失效。
解決方案:更改配置文件
配置文件:
改ip的配置文件:IP/NETMASK/GW/DNS等屬性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE 注:IFACE:接口名稱
ifcfg-IFACE配置文件參數:
DEVICE:此配置文件對應的設備的名稱;
ONBOOT:在系統引導過程當中,是否激活此接口;
UUID:此設備的唯一標識;
IPV6INIT:是否初始化IPv6;
BOOTPROTO:激活此接口時使用什麼協議來配置接口屬性,經常使用的有dhcp、bootp、static、none;
TYPE:接口類型,常見的有Ethernet, Bridge;
DNS1:第一DNS服務器指向;
DNS2:備用DNS服務器指向;
DOMAIN:DNS搜索域;
IPADDR: IP地址;
NETMASK:子網掩碼;CentOS 7支持使用PREFIX以長度方式指明子網掩碼;
GATEWAY:默認網關;
USERCTL:是否容許普通用戶控制此設備;
PEERDNS:若是BOOTPROTO的值爲「dhcp」,是否容許dhcp server分配的dns服務器指向覆蓋本地手動指定的DNS服務器指向;默認爲容許;
HWADDR:設備的MAC地址;
NM_CONTROLLED:是否使用NetworkManager服務來控制接口; 通常都禁用掉
改路由的相關配置文件:/etc/sysconfig/networkj-scripts/route-IFACE
支持兩種配置方式,但不可混用;
(1) 每行一個路由條目:
TARGET via GW
例如:172.18.0.0/16 via 0.0.0.0
(2) 每三行一個路由條目:
ADDRESS0=172.18.0.0
NETMASK0=255.255.0.0
GATEWAY0=0.0.0.0
圖形化界面更改:
(CentOS 6:system-config-network (setup),CentOS 7: nmtui)
注:以上更改之後,都要重啓一下網絡服務network
CentOS 6: service SERVICE {start|stop|restart|status}
CentOS 7:systemctl {start|stop|restart|status} SERVICE[.service]
網絡屬性查看類命令介紹:
ss命令:ss [options] [ FILTER ]
選項:
-t:TCP協議的相關鏈接
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:監聽狀態的鏈接
-a:全部狀態的鏈接
-n:數字格式
-p:相關的程序及其PID
-e:擴展格式信息
-m:內存用量
-o:計時器信息
經常使用組合:-tan, -uan, -tnl, -unl, -tunlp
很是好用的「過濾器」FILTER := [ state TCP-STATE ] [ EXPRESSION ]
TCP的常見狀態STATE:
LISTEN:監聽
ESTABLISEHD:創建的鏈接
FIN_WAIT_1:
FIN_WAIT_2:
SYN_SENT:
SYN_RECV:
CLOSED:
~]# ss -tan state ESTABLISHED
EXPRESSION:
dport = 目標端口
sport = 源端口
示例:'( dport = :22 or sport = :22)'
~]# ss -tan '( dport = :22 or sport = :22 )'
給接口配置多個地址:
ip addr以外,ifconfig或配置文件均可以;
(1) ifconfig IFACE_LABEL IPADDR/NETMASK
IFACE_LABEL: eth0:0, eth0:1, ...
(2) 爲別名添加配置文件;
DEVICE=IFACE_LABEL
BOOTPROTO:網上別名不支持動態獲取地址;
static, none
nmcli命令:
nmcli [ OPTIONS ] OBJECT { COMMAND | help }
device - show and manage network interfaces
COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }
connection - start, stop, and manage network connections
COMMAND := { show | up | down | add | edit | modify | delete | reload | load }
modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>
如何修改IP地址等屬性:
# nmcli conn modify IFACE [+|-]setting.property value
ipv4.address
ipv4.gateway
ipv4.dns1
ipv4.method
manual
課外做業:nmap, ncat, tcpdump命令;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
知識拓展
ifcfg命令家族: ifconfig, route, netstat
ifconfig命令:接口及地址查看和管理
ifconfig [INTERFACE]
# ifconfig -a:顯示全部接口,包括inactive狀態的接口;
ifconfig interface [aftype] options | address ...
# ifconfig IFACE IP/MASK [up|down]
# ifconfig IFACE IP netmask NETMASK
options:
[-]promisc 混雜模式
管理IPv6地址:
add addr/prefixlen
del addr/prefixlen
route命令:路由查看及管理
路由條目類型:
主機路由:目標地址爲單個IP;
網絡路由:目標地址爲IP網絡;
默認路由:目標爲任意網絡,0.0.0.0/0.0.0.0
查看:
# route -n
添加:
route add [-net|-host] target [netmask Nm] [gw GW] [[dev] If]
示例: route add -net 10.0.0.0/8 gw 192.168.10.1 dev eth1
route add -net 0.0.0.0/0.0.0.0 gw 192.168.10.1
route add default gw 192.168.10.1
刪除:
route del [-net|-host] target [gw Gw] [netmask Nm] [[dev] If]
示例: route del -net 10.0.0.0/8 gw 192.168.10.1
route del default
netstat命令:
顯示路由表:netstat -rn
-r:顯示內核路由表
-n:數字格式
顯示網絡鏈接:
netstat [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--listening|-l] [--all|-a] [--numeric|-n] [--extend|-e[--extend|-e]] [--program|-p]
-t:TCP協議的相關鏈接,鏈接均有其狀態;FSM(Finate State Machine);
-u:UDP相關的鏈接
-w:raw socket相關的鏈接
-l:處於監聽狀態的鏈接
-a:全部狀態
-n:以數字格式顯示IP和Port;
-e:擴展格式
-p:顯示相關的進程及PID;
經常使用組合:
-tan, -uan, -tnl, -unl, -tunlp
傳輸層協議:
tcp:面向鏈接的協議;通訊開始以前,要創建一個虛鏈路;通訊完成後還要拆除鏈接;
udp:無鏈接的協議;直接發送數據報文;
顯示接口的統計數據:
全部接口:netstat -i
指定接口:netstat -I<IFace>
ifup/ifdown命令:
注意:經過配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE來識別接口並完成配置;
配置主機名:
查看:hostname
配置:hostname HOSTNAME 當前系統有效,重啓後無效;
hostnamectl命令(CentOS 7):
hostnamectl status:顯示當前主機名信息;
hostnamectl set-hostname:設定主機名,永久有效;
配置文件:/etc/sysconfig/network
HOSTNAME=<HOSTNAME>
注意:此方法的設置不會當即生效; 但之後會一直有效;
配置DNS服務器指向:
配置文件:/etc/resolv.conf
nameserver DNS_SERVER_IP
如何測試(host/nslookup/dig):
# dig -t A FQDN
FQDN --> IP
# dig -x IP
IP --> FQDN