Networking: Difference between revisions

From wiki
Jump to navigation Jump to search
No edit summary
 
(15 intermediate revisions by the same user not shown)
Line 2: Line 2:
[[Category:Linux/Unix]]
[[Category:Linux/Unix]]


==Check network connectivity==
=Basics=
For IP networks there are 2 address schemes, [[IPv4]] and [[IPv6]]
;ping <address>
:Get response from <address> interface
;<code>for i in $(seq 1 254); do ping -c1 -t 1 10.117.192.$i; done</code>
:Scan a subnet


;netstat -nap
=Check network connectivity=
:Show port status (LISTEN, ESTABLISHED, .....) and the program that owns it.
 
;netstat -na  # deprecated
;ss -na
:Show port status (LISTEN, ESTABLISHED, .....)
:If you are root -p adds the process that owns the socket


;<code>nc -v -z <host> <port></code>
;<code>nc -v -z <host> <port></code>
Line 33: Line 42:
do
do
   curl  http://${TARGET}:${PORT} --connect-timeout 1 > /dev/null 2>&1
   curl  http://${TARGET}:${PORT} --connect-timeout 1 > /dev/null 2>&1
   if [ $? == 28 ]
   if [ $? == 28 ]   # 28 is the curl code for connection timeout
   then
   then
     echo No connection to ${TARGET}:${PORT}
     echo No connection to ${TARGET}:${PORT}
Line 40: Line 49:
</syntaxhighlight>
</syntaxhighlight>


;<code>wget <URL></code>
:Get the data from <URL>
===[[OpenSSL]]===
See the [[OpenSSL]] page


==Interfaces==
=Interfaces=
;ifconfig -a
;ifconfig -a   # Deprecated, replaced by ip
:Show all network interfaces
:Show all network interfaces


;ifconfig <interface> <ipaddrss>
;ifconfig <interface> <ipaddress>
:Assign <ipaddress> to <interface>
:Assign <ipaddress> to <interface>
;ip address
:Show all IP addresses
;ip -6 address
:Show all IPv6 addresses


;ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
;ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
Line 59: Line 68:
:Show interface link status (speed)
:Show interface link status (speed)


;The interfaces file
When not using confusing things like [[NetworkManager]] network configuration is controlled by the interfaces file.
<syntaxhighlight lang=bash>
;/etc/network/interfaces
apt-get purge network-manager
<syntaxhighlight lang=text>
vi /etc/network/interfaces
auto <interface>            # Boot process waits until the interface is up or a time-out (5 minutes)
auto <interface>
allow-hotplug <interface>   # Boot process does not wait for the interface.
iface <interface> inet dhcp
iface <interface> inet dhcp
     wpa-ssid <ssid>
     wpa-ssid <ssid>
     wpa-psk <password>
     wpa-psk <password>


# To have ipv6 autoconfigured (by radvd) and add own address
# For static ipv4
interface <interface> inet static
    address xxx.xxx.xxx.xxx/<masklen>
    gateway xxx.xxx.xxx.xxx
# To have ipv6 auto-configured (by SLAAC)
iface <interface> inet6 auto
 
# To have ipv6 auto-configured (by SLAAC) and add own address
iface <interface> inet6 static
iface <interface> inet6 static
     address unique:local:address:prefix:your:own:host:address
     address unique:local:address:prefix:your:own:host:address
Line 79: Line 95:
     netmask 64
     netmask 64


# To have ipv6 autoconfigured (by radvd) and query a dhcp-server
# To have ipv6 auto-configured (by SLAAC) and query a dhcp-server
iface <interface> inet6 dhcp
iface <interface> inet6 dhcp
     autoconf 1
     autoconf 1
</syntaxhighlight>
</syntaxhighlight>


For interfaces that may not be connected use <code>allow-hotplug</code> instead of <code>auto</code>.<br>
;Disable an interface completely (even not shown by ifconfig)
The bootprocces now does not wait for an DCHP-answer on disconnected interfaces. Saves you about 5 minutes during startup.
:vi /etc/modprobe.d/blackllst.conf
:Put in the driver for your interface like: <code>blacklist ath9k</code>


==Routing==
=Wireless=
;route add -net default gw <IPaddress>
;iwscan <interface> scanning
:Show available accesspoints
;iwconfig <interface>
:Show details of the wireless connection
 
=Routing=
;route add -net default gw <IPaddress>  # Deprecated
;ip route add -net default gw <IPaddress>  
:Add a default route using <IPaddress>  as gateway
:Add a default route using <IPaddress>  as gateway


==Tunneling==
=Tunneling=
;<code>ssh -L 8080:remotehost:3006 proxy</code>
;<code>ssh -L 8080:remotehost:3006 proxy</code>
:Login over ssh to proxy and there connect to remotehost port 3006. Connect local port 8080 to the remote connection.
:Login over ssh to proxy and there connect to remotehost port 3006. Connect local port 8080 to the remote connection.
Line 97: Line 121:
:Using <code>-nNT</code> prevents that the ssh command opens a terminal on the proxy. The ssh command however must remain active.
:Using <code>-nNT</code> prevents that the ssh command opens a terminal on the proxy. The ssh command however must remain active.


==Tracing==
=Tracing=
For tracing traffic see [[Tcpdump]]
For tracing traffic see [[Tcpdump]]
;traceroute <destination>
:Show which route a package takes to reach destination
;ip route get <IPaddress>
:Show the interface used to go to <IPaddress>
To get just the interface name you can use this[https://unix.stackexchange.com/questions/14961/how-to-find-out-which-interface-am-i-using-for-connecting-to-the-internet]:
<syntaxhighlight lang=bash>
host=<fqdn>
host_ip=$(getent ahosts "$host" | awk '{print $1; exit}')
ip route get "$host_ip" | grep -Po '(?<=(dev ))(\S+)'
</syntaxhighlight>
=Other=
;<code>wget <URL></code>
:Get the data from <URL>

Latest revision as of 20:17, 4 January 2026


Basics

For IP networks there are 2 address schemes, IPv4 and IPv6

ping <address>
Get response from <address> interface
for i in $(seq 1 254); do ping -c1 -t 1 10.117.192.$i; done
Scan a subnet

Check network connectivity

netstat -na # deprecated
ss -na
Show port status (LISTEN, ESTABLISHED, .....)
If you are root -p adds the process that owns the socket
nc -v -z <host> <port>
Netcat: Tell me if we can open a connection to <host> on <port>. Without -z it works like telnet
nc -v -u -z <host> <port>
Tell me if we can open a connection to <host> on a UDP <port>
curl -vvv -k --proxy1.0 <proxyIP>:<proxyPort> <Remote URL>
Get the data from <remote URL> via <proxyIP> -k allows insecure SSL connections
curl -vvv telnet://<IP>:<port>
Just test connectivity to a port
#!/bin/bash

PORT=$1

TARGETS="999.999.999.999
888.888.888.888
777.777.777.777
666.666.666.666
"

for TARGET in ${TARGETS}
do
  curl  http://${TARGET}:${PORT} --connect-timeout 1 > /dev/null 2>&1
  if [ $? == 28 ]    # 28 is the curl code for connection timeout
   then
    echo No connection to ${TARGET}:${PORT}
  fi
done


Interfaces

ifconfig -a # Deprecated, replaced by ip
Show all network interfaces
ifconfig <interface> <ipaddress>
Assign <ipaddress> to <interface>
ip address
Show all IP addresses
ip -6 address
Show all IPv6 addresses
ip -6 addr add <ipv6address>/<prefixlength> dev <interface>
Add an IPv6 address to <interface>
mii-tool <interface>
Show interface link status (speed)

When not using confusing things like NetworkManager network configuration is controlled by the interfaces file.

/etc/network/interfaces
auto <interface>             # Boot process waits until the interface is up or a time-out (5 minutes)
allow-hotplug <interface>    # Boot process does not wait for the interface.
iface <interface> inet dhcp
    wpa-ssid <ssid>
    wpa-psk <password>

# For static ipv4
interface <interface> inet static
    address xxx.xxx.xxx.xxx/<masklen>
    gateway xxx.xxx.xxx.xxx
# To have ipv6 auto-configured (by SLAAC)
iface <interface> inet6 auto

# To have ipv6 auto-configured (by SLAAC) and add own address
iface <interface> inet6 static
    address unique:local:address:prefix:your:own:host:address
    autoconf 1
    netmask 64

# Add another address to <interface>(work for IPv4 addresses too
iface <interface> inet6 static
    address unique:local:address:prefix:your:own:host:address
    netmask 64

# To have ipv6 auto-configured (by SLAAC) and query a dhcp-server
iface <interface> inet6 dhcp
    autoconf 1
Disable an interface completely (even not shown by ifconfig)
vi /etc/modprobe.d/blackllst.conf
Put in the driver for your interface like: blacklist ath9k

Wireless

iwscan <interface> scanning
Show available accesspoints
iwconfig <interface>
Show details of the wireless connection

Routing

route add -net default gw <IPaddress> # Deprecated
ip route add -net default gw <IPaddress>
Add a default route using <IPaddress> as gateway

Tunneling

ssh -L 8080:remotehost:3006 proxy
Login over ssh to proxy and there connect to remotehost port 3006. Connect local port 8080 to the remote connection.
Now if you connect to port 8080 on your local server you are connected to port 3006 on the remotehost
Using -nNT prevents that the ssh command opens a terminal on the proxy. The ssh command however must remain active.

Tracing

For tracing traffic see Tcpdump

traceroute <destination>
Show which route a package takes to reach destination
ip route get <IPaddress>
Show the interface used to go to <IPaddress>

To get just the interface name you can use this[1]:

host=<fqdn>
host_ip=$(getent ahosts "$host" | awk '{print $1; exit}')
ip route get "$host_ip" | grep -Po '(?<=(dev ))(\S+)'

Other

wget <URL>
Get the data from <URL>