linux网络相关命令使用

A,iptables使用示例

1,将请求80端口的包发送给本机8180端口(这样,别的机器访问本机的80端口时会被转发到8180端口去)
iptables -t nat -A PREROUTING -p tcp -d 10.6.2.110 --dport 80 -j DNAT --to-destination 10.6.2.110:8180
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8180

用 127.0.0.1 或者本机 IP 来访问本机的端口。本地连接的数据包不会通过网卡,而是由内核处理后直接发给本地进程。这种数据包在 iptables 中只经过 OUTPUT 链,而不会经过 PREROUTING 链。所以需要在 OUTPUT 链中进行 DNAT。除了对 127.0.0.1 之外,对本机 IP (即 10.6.2.110) 的访问也属于本地连接。
这样,本机访问本机的80端口时会被转发到8180端口去
iptables -t nat -A OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j DNAT --to 127.0.0.1:8180
iptables -t nat -A OUTPUT -p tcp -d 10.6.2.110 --dport 80 -j DNAT --to 127.0.0.1:8180 

2,端口转发到别的虚拟机方式如下
echo "1">/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -p tcp -d 10.6.2.110 --dport 80 -j DNAT --to-destination 10.6.2.11:80
iptables -t nat -A POSTROUTING -p tcp -d 10.6.2.11 --dport 80 -j SNAT --to-source 10.6.2.110

3,禁止某个ip段访问本机web服务
iptables -A INPUT  -p tcp -s 124.95.172.128/26 --dport 80 -j REJECT
iptables -A INPUT  -p tcp -s 124.95.172.128/26 --dport 80 -j DROP

4,其他命令
iptables -t nat -D PREROUTING 2        删除某条路由  
iptables -t nat -F                    清空路由
iptables -t nat -L                    列举,查看网关/本机dns路由

附:windows可以用plink实现端口转发等
1,将发往本机lo设备8088端口的数据转发到本机eth0设备的3000端口(-L参数,本机开启sshd)
plink.exe -C -N -L 127.0.0.1:8088:192.168.201.61:3000 -pw passwd ciaos@192.168.201.61
2,将发往本机lo设备8088端口的数据转发到远端10.6.2.11的8088端口(-L参数,远端开启sshd)
plink.exe -C -N -L 127.0.0.1:8088:10.6.2.11:8088 -pw remote_passwd root@10.6.2.11
3,将发往本地lo设备8080端口的数据转发到远端10.6.2.11机器的80端口(-R参数,本机开启sshd)
plink.exe -C -N -R 127.0.0.1:8088:10.6.2.11:80 -pw passwd ciaos@192.168.201.61
-C 启用压缩
-N 不开启shell
用plink.exe还可以配置Socket 5代理(代理服务器需要开启sshd服务) plink.exe -C -N -D 本机IP:本机端口 -pw huaweiNB root@代理服务器IP
4,外部请求转到127.0.0.1端口
# iptables -t nat -I PREROUTING -p tcp -d [公网IP] --dport 8080 -j DNAT --to-destination 127.0.0.1:80
# sysctl -w net.ipv4.conf.eth1.route_localnet=1
其中,请用ifconfig确定本机的外网地址(在上面的例子中为公网IP)是eth0还是eth1。步骤二中,要用对应的eth。
将步骤二修改的变量修改到配置文件/etc/sysctl.conf中,重启可以保留。

B,traceroute使用示例

traceroute [-dFlnrvx][-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p<通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包大小]

windows工具如下

tracert -d -h maximum_hops -j host-list -w timeout target_host
参数的作用:
-d                指定不将地址解析为主机名
-h maximum_hops   指定搜索目标地址时的最大跃点数
-j host-list      指定沿主机列表的松散源路由
-w timeout        由每个回复的 timeout 指定的等待毫秒数
target_host       指定目标主机的名称或 IP 地址。

C,tcpdump使用示例(windows可以使用wireshark或者httpanalyzer)

tcpdump -s 0 -l -w - dst host 10.6.2.110 and port 80 | strings   查看指向目标主机及端口的数据包
tcpdump -s 0 -l -w - dst host 10.6.2.110 and port 80 > file         同上,保存结果到file文件
tcpdump host 10.6.2.110 and \(10.6.2.245 or 10.6.2.11 \) and port 80   截获主机10.6.2.110 和主机10.6.2.11或10.6.2.245的通信
tcpdump -s 0 -l -w - ip host 10.6.2.110 and ! 10.6.2.245  除了和主机10.6.2.245之外所有主机通信的ip包

其他格式:
tcpdump -i eth0 dst host 10.6.2.245 and src 10.6.2.11 and port 80 -X -s 0 -c 3
tcpdump -s0 -A client_ip  

D,route使用示例

/etc/sysconfig/network/ifcfg-eth0 网络配置信息

route -n 查看默认路由及网关 (或ip route show)
route del default gw 10.6.2.1  删除默认网关
route add default gw 10.6.2.110 配置默认网关

添加路由(访问192.168.193.0网络就会从网关10.6.2.110走)
route add -net 192.168.193.0 netmask 255.255.255.0 gw 10.6.2.110
route add –host 192.168.193.110 dev eth0:1(访问主机192.168.193.110会从网卡eth0:1走)

windows添加删除路由示例
route delete 10.6.0.0
route add 10.6.0.0 mask 255.255.0.0 192.168.200.1 /p

E,ifconfig使用示例

ifconfig eth0 10.6.2.112 netmask 255.255.255.0 修改ip及子网掩码
配置eth0别名设备 eth0:1 的IP,并添加路由
ifconfig eth0:1 192.168.4.2 

设置网卡eth1的IP地址、网络掩码、广播地址,物理地址并且激活它
ifconfig eth1 192.168.1.252 hw ether 00:11:00:00:11:11 netmask 255.255.255.0 broadcast 192.168.1.255 up

(关闭ifconfig eth0:1 down)

ifconfig eth0 mtu 1500 改变网络设备MTU(最大传输单元)的值

F,ip使用示例

ip是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfig、route等

ip link set dev eth0:1 (down|up) 等价于 ifconfig eth0:1 (down|up)
ip link set dev eth0 mtu 1500 改变网络设备MTU(最大传输单元)的值
ip link set dev eth0 address 00:01:4f:00:15:f1 修改网络设备的MAC地址
ip link set dev eth0 txqueuelen 100    改变设备传输队列的长度

ip addr add 192.168.4.2/24 brd + dev eth0 label eth0:1 等价于ifconfig eth0:1 192.168.4.2
ip addr show显示协议地址

ip认识的设备
ip link
ip route     管理路由表条目
ip rule      添加策略路由
ip neighbour ARP缓冲条目
ip address   一个设备的协议地址(ip)
maddress     多播地址
mroute       多播路由缓冲区条目
tunnel       IP上的通道

G,其他命令

arp             查看arp缓存
arp –s IP MAC    添加arp记录    (可以伪造arp)
arp –d IP        删除

arping -b 10.6.2.47 查看IP对应mac地址,如果有多个返回,说明mac冲突
ping 计算耗时和丢包率,ping的过程按"Ctrl"+"\"按键 ciaos:~ # ping 10.6.2.11 PING 10.6.2.11 (10.6.2.11) 56(84) bytes of data. 64 bytes from 10.6.2.11: icmp_seq=1 ttl=64 time=0.226 ms 64 bytes from 10.6.2.11: icmp_seq=2 ttl=64 time=0.228 ms 64 bytes from 10.6.2.11: icmp_seq=3 ttl=64 time=0.233 ms 3/3 packets, 0% loss, min/avg/ewma/max = 0.226/0.229/0.227/0.233 ms 64 bytes from 10.6.2.11: icmp_seq=4 ttl=64 time=0.220 ms 64 bytes from 10.6.2.11: icmp_seq=5 ttl=64 time=0.200 ms 64 bytes from 10.6.2.11: icmp_seq=6 ttl=64 time=0.183 ms 64 bytes from 10.6.2.11: icmp_seq=7 ttl=64 time=0.259 ms 64 bytes from 10.6.2.11: icmp_seq=8 ttl=64 time=0.270 ms 64 bytes from 10.6.2.11: icmp_seq=9 ttl=64 time=0.256 ms 9/9 packets, 0% loss, min/avg/ewma/max = 0.183/0.230/0.232/0.270 ms

拒绝ping本机
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

查看网络故障的一般顺序
1,ping 127.0.0.1查看tcp/ip是否正常工作
2,ping 局域网ip地址查看网络适配器是否工作以及本地IP正确配置
3,ping 默认网关查看是否连接局域网以及网关是否在工作
4,ping 外网ip查看网关是否正确工作,转发数据包
5,ping 外网域名,查看域名解析是否正常

远程登录局域网电脑
1,下载putty工具包 
2,命令行执行 PLINK.EXE -N -P 22 root@10.6.2.11 -L 127.0.0.1:13389:10.6.2.59:3389 
3,其中"10.6.2.11"可以为公网IP,本机可达; 
   "10.6.2.59"可以为内网,和本机没有连接,但需要和10.6.2.11连接 
原理:本机通过10.6.2.11虚拟机,将发往本机13389端口的数据包发送给10.6.2.59的3389端口,并将数据返回。 
这样,直接打开远程登录工具登录127.0.0.1:13389端口就能访问10.6.2.59了,很酷!
注:
a,如果远程登录linux机器,命令如下(原理一样,对22端口转发)
  PLINK.EXE -N -P 22 root@10.6.2.11 -L 127.0.0.1:22:10.6.2.110:22
b,如果公网"10.6.2.11"为windows机器,就更简单了,直接远程桌面,然后再使用远程桌面登录内网windows或者linux

反向ssh(Windows的ssh.exe版本没有-f参数,去掉此参数即可)  
0. 在两侧都安装ssh 
1. 在被控端运行ssh -f -N -R 10000:受控端ip:22 username@主控端ip。这里的10000和22是端口号,也就是说,在主控端10000端口和被控端的22端口上建立了一个通道,username为主控端用户名。 
2. 在主控端运行ssh username@localhost -p 10000。这里的username是你被控端的username,10000就是刚才的那个端口号。
(ssh.exe -f -N -R 3000:localhost:3000 root@10.6.2.11

 隧道技术可参照http://blog.chinaunix.net/uid-20761674-id-74962.html

稳定的隧道可用autossh,建立好ssh免密码登录后

autossh -f -R 2222:localhost:22 15.28.18.101 -o TCPKeepAlive=yes vmstat 15
posted @ 2013-07-15 19:39  ciaos  阅读(1460)  评论(0编辑  收藏  举报