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:8180iptables -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:8180iptables -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_forwardiptables -t nat -A PREROUTING -p tcp -d 10.6.2.110 --dport 80 -j DNAT --to-destination 10.6.2.11:80iptables -t nat -A POSTROUTING -p tcp -d 10.6.2.11 --dport 80 -j SNAT --to-source 10.6.2.1103,禁止某个ip段访问本机web服务iptables -A INPUT -p tcp -s 124.95.172.128/26 --dport 80 -j REJECTiptables -A INPUT -p tcp -s 124.95.172.128/26 --dport 80 -j DROP4,其他命令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.612,将发往本机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.113,将发往本地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@代理服务器IP4,外部请求转到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 3tcpdump -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.110route add –host 192.168.193.110 dev eth0:1(访问主机192.168.193.110会从网卡eth0:1走)windows添加删除路由示例route delete 10.6.0.0route 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.2ip addr show显示协议地址ip认识的设备ip linkip 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 -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 -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 -p 10000。这里的username是你被控端的username,10000就是刚才的那个端口号。 (ssh.exe -f -N -R 3000:localhost:3000 root@10.6.2.11)
隧道技术可参照
稳定的隧道可用autossh,建立好ssh免密码登录后
autossh -f -R 2222:localhost:22 15.28.18.101 -o TCPKeepAlive=yes vmstat 15