清月·墨言 - linux
type: channel
link: https://www.moyann.com/tag/linux/
items: 三大主流负载均衡器LVS、Nginx、HAproxy详解
items: Linux IP命令
items: Linux grep 命令
items: YUM使用方法详解
items: VI 编辑器详解
items: Linux firewall-cmd 命令详解
items: Linux iptables 详细说明
items: ip6tables 使用方法
items: linux中nmcli命令使用及网络配置
items: 远程桌面中转，基于 UltraVNC Repeater（中继器）的远程桌面服务搭建，用于复杂网络环境

三大主流负载均衡器LVS、Nginx、HAproxy详解
type: item
date: 2022-03-12T13:07:00+08:00
description: 1.LVS 简介： LVS的是Linux Virtual Server的简写，翻译为Linux虚拟服务器，即一个虚拟的服务器集群系统，> 是由我国章文嵩博士在1998年5月所研究成立，也是中国国内最早出现的自由软件项目之一。 LVS由2部分程序组成，包括 ipvs 和 ipvsadm ipvs(ip virtual server)：一段代码工作在内核空间，叫ipvs，是真正生效实现调度的代码。 ipvsadm：另外一段是工作在用户空间，叫ipvsadm，负责为ipvs内核框架编写规则，定义谁是集群服务，而谁是后端真实的服务器> (Real Server) LVS相关的几种IP: VIP :（virtual IP） LVS服务器上接收外网数据报文的网卡IP地址 DIP: （director IP） LVS服务器上发送数据报文到real server的网卡IP地址 RIP :（real server） 真实服务器上的IP，即提供服务的服务器IP(常简称为RS) CIP :（client IP ） 客户端的IP 工作模式： LVS常用的工作模式有DR模式、TUN模式、以及NAT模式 1.DR模式 直接路由: Director Route (1).工作原理 每个RS（Real Server）上都有两个IP：VIP和RIP，但是VIP是隐藏的，即不能提供解析等功能， 只是用来做请求回复的源IP的，Director（VS）上只需要一个网卡，在该网卡上配置两个IP：VIP和DIP， 在VS接收到客户端的请求后，VS根据负载算法选择一台RS的网卡mac作为客户端请求包中的目标mac， 通过arp转交给后端RS处理，后端RS再通过自己的路由网关回复给客户端client。 (2).特点 各DIP（VS）必须与 RIP（RS） 在同一局域网内(即具有相同的广播域)，且两个有相同的目标地址（vip）； RS的RIP可以使用私有地址，也可以使用公网地址，以方便配置；不支持支持端口映射； RS可以使用必须为uninx操作系统（OS）；且RS需要配置vip但不做响应； Director（VS）仅负责处理入站请求，响应报文由RS( Real server) 直接发往客户端； Real server（RS）不能将网关指向DIP（DS），而直接使用前端网关响应请求报文； (3).优缺点 优点： 负载均衡器VS只负责将请求包分发给物理服务器RS，而物理服务器RS将应答包直接发给用户。所以，负载均衡器VS能处理很巨大的请求量。 这种方式，一台负载均衡能为超过100台的物理服务器服务，负载均衡器不再是系统的瓶颈。 使用LVS/DR方式，如果你的负载均VS拥有100M的全双工网卡的话，就能使得整个Virtual Server能达到1G的吞吐量，甚至更高； 缺点： 这种方式需要所有的DIR和RIP都在同一广播域；不支持异地容灾。 总结： LVS/DR是三种模式中性能最高的一种模式，比LVS-NAT模式下负载的RS serve更多，通常在100台左右，对网络环境要求更高，也是日常应用的最多的一种工作模式。 2.TUN模式 (1).工作原理 它的连接调度和管理与LVS/NAT中的一样，利用ip隧道技术的原理，即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息， 不改变原来整个请求包信息，只是新增了一层ip首部信息，再利用路由原理将请求发给RS server，不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。 (2).特点 RIP、VIP、DIP全是公网地址 RS的网关不会也不可能指向DIP 所有的请求报文经由Director Server，但响应报文必须不能进过Director Server 不支持端口映射, RS的系统必须支持隧道 (3).优缺点 优点： 不需要调度应答报文，负载能力强； 服务器和调度器可以不在同一个VLAN中； 支持广域负载均衡； 缺点： 所有的服务器必须支持“IP Tunneling”协议，需安装内核模块，安装复杂； 建立IP隧道的开销大； 服务器需要联通外网，风险较大； 不支持端口映射； 3.NAT模式 NAT（Network address translation）即网络地址转换，作为一种过渡解决手段，可以用来减少对全球合法IP地址的需求。 简单的说，NAT就是在内部专用网络中使用内部地址，而当内部节点要与外界网络发生联系时，就在边缘路由器或者防火墙处， 将内部地址转换成全局地址，从而使得在外部公共网（Internet）上使用一个和数个合法IP地址正常传输数据。 其中，这里的外网和内网是相对来讲的，下面假设能够访问互联网的网络为外网。 (1).工作原理 当数据包到达VS时…

Linux IP命令
type: item
date: 2020-08-24T13:23:00+08:00
description: ip 网络配置工具 补充说明 ip命令 用来显示或操纵Linux主机的路由、网络设备、策略路由和隧道，是Linux下较新的功能强大的网络配置工具。 语法 ip(选项)(参数) Usage: ip [ OPTIONS ] OBJECT { COMMAND | help } ip [ -force ] -batch filename 选项 OBJECT := { link | address | addrlabel | route | rule | neigh | ntable | tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm | netns | l2tp | macsec | tcp_metrics | token } -V：显示指令版本信息； -s：输出更详细的信息； -f：强制使用指定的协议族； -4：指定使用的网络层协议是IPv4协议； -6：指定使用的网络层协议是IPv6协议； -0：输出信息每条记录输出一行，即使内容较多也不换行显示； -r：显示主机时，不使用IP地址，而使用主机的域名。 参数 OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | bridge | link } | -4 | -6 | -I | -D | -B | -0 | -l[oops] { maximum-addr-flush-attempts } | -o[neline] | -t[imestamp] | -ts[hort] | -b[atch] [filename] | -rc[vbuf] [size] | -n[etns] name | -a[ll] } 网络对象：指定要管理的网络对象； 具体操作：对指定的网络对象完成具体操作； help：显示网络对象支持的操作命令的帮助信息。 实例 ip link show # 显示网络接口信息 ip link set eth0 up # 开启网卡 ip link set eth0 down # 关闭网卡 ip link set eth0 promisc on # 开启网卡的混合模式 ip link set eth0 promisc offi # 关闭网卡的混个模式 ip link set eth0 txqueuelen 1200 # 设置网卡队列长度 ip link set eth0 mtu 1400 # 设置网卡最大传输单元 ip addr show # 显示网卡IP信息 ip addr add 192.168.0.1/24 dev eth0 # 设置eth0网卡IP地址192.168.0.1 ip addr del 192.168.0.1/24 dev eth0 # 删除eth0网卡IP地址 ip route show # 显示系统路由 ip route add default via 192.168.1.254 # 设置系统默认路由 ip route list # 查看路由信息 ip route add 192.168.4.0/24 via 192.168.0.254 dev eth0 # 设置192.168.4.0网段的网关为192.168.0.254,数据走eth0接口 ip route add default via 192.168.0.254 dev eth0 # 设置默认网关为192.168.0.254 ip route del 192.168.4.0/24 # 删除192.168.4.0网段的网关 ip route del default # 删除默认路由 ip route delete 192.168.1.0/24 dev eth0 # 删除路由 用ip命令显示网络设备的运行状态 [root@localhost ~]# ip link list 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:3e:00:1e:51 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> …

Linux grep 命令
type: item
date: 2020-08-24T13:19:00+08:00
description: grep 强大的文本搜索工具 补充说明 grep （global search regular expression(RE) and print out the line，全面搜索正则表达式并把行打印出来）是一种强大的文本搜索工具，它能使用正则表达式搜索文本，并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用，使用上十分灵活。 选项 -a --text # 不要忽略二进制数据。 -A <显示行数> --after-context=<显示行数> # 除了显示符合范本样式的那一行之外，并显示该行之后的内容。 -b --byte-offset # 在显示符合范本样式的那一行之外，并显示该行之前的内容。 -B<显示行数> --before-context=<显示行数> # 除了显示符合样式的那一行之外，并显示该行之前的内容。 -c --count # 计算符合范本样式的列数。 -C<显示行数> --context=<显示行数>或-<显示行数> # 除了显示符合范本样式的那一列之外，并显示该列之前后的内容。 -d<进行动作> --directories=<动作> # 当指定要查找的是目录而非文件时，必须使用这项参数，否则grep命令将回报信息并停止动作。 -e<范本样式> --regexp=<范本样式> # 指定字符串作为查找文件内容的范本样式。 -E --extended-regexp # 将范本样式为延伸的普通表示法来使用，意味着使用能使用扩展正则表达式。 -f<范本文件> --file=<规则文件> # 指定范本文件，其内容有一个或多个范本样式，让grep查找符合范本条件的文件内容，格式为每一列的范本样式。 -F --fixed-regexp # 将范本样式视为固定字符串的列表。 -G --basic-regexp # 将范本样式视为普通的表示法来使用。 -h --no-filename # 在显示符合范本样式的那一列之前，不标示该列所属的文件名称。 -H --with-filename # 在显示符合范本样式的那一列之前，标示该列的文件名称。 -i --ignore-case # 忽略字符大小写的差别。 -l --file-with-matches # 列出文件内容符合指定的范本样式的文件名称。 -L --files-without-match # 列出文件内容不符合指定的范本样式的文件名称。 -n --line-number # 在显示符合范本样式的那一列之前，标示出该列的编号。 -P --perl-regexp # PATTERN 是一个 Perl 正则表达式 -q --quiet或--silent # 不显示任何信息。 -R/-r --recursive # 此参数的效果和指定“-d recurse”参数相同。 -s --no-messages # 不显示错误信息。 -v --revert-match # 反转查找。 -V --version # 显示版本信息。 -w --word-regexp # 只显示全字符合的列。 -x --line-regexp # 只显示全列符合的列。 -y # 此参数效果跟“-i”相同。 -o # 只输出文件中匹配到的部分。 -m <num> --max-count=<num> # 找到num行结果后停止查找，用来限制匹配行数 规则表达式 ^ # 锚定行的开始 如：'^grep'匹配所有以grep开头的行。 $ # 锚定行的结束 如：'grep$' 匹配所有以grep结尾的行。 . # 匹配一个非换行符的字符 如：'gr.p'匹配gr后接一个任意字符，然后是p。 * # 匹配零个或多个先前字符 如：'*grep'匹配所有一个或多个空格后紧跟grep的行。 .* # 一起用代表任意字符。 [] # 匹配一个指定范围内的字符，如'[Gg]rep'匹配Grep和grep。 [^] # 匹配一个不在指定范围内的字符，如：'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头，紧跟rep的行。 \(..\) # 标记匹配字符，如'\(love\)'，love被标记为1。 \< # 锚定单词的开始，如:'\<grep'匹配包含以grep开头的单词的行。 \> # 锚定单词的结束，如'grep\>'匹配包含以grep结尾的单词的行。 x\{m\} # 重复字符x，m次，如：'0\{5\}'匹配包含5个o的行。 x\{m,\} # 重复字符x,至少m次，如：'o\{5,\}'匹配至少有5个o的行。 x\{m,n\} # 重复字符x，至少m次，不多于n次，如：'o\{5,10\}'匹配5--10个o的行。 \w # 匹配文字和数字字符，也就是[A-Za-z0-9]，如…

YUM使用方法详解
type: item
date: 2020-08-24T13:15:00+08:00
description: yum 基于RPM的软件包管理器 补充说明 yum命令 是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器，它可以使系统管理人员交互和自动化地更新与管理RPM软件包，能够从指定的服务器自动下载RPM包并且安装，可以自动处理依赖性关系，并且一次安装所有依赖的软体包，无须繁琐地一次次下载、安装。 yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令，而且命令简洁而又好记。 语法 yum(选项)(参数) 选项 -h：显示帮助信息； -y：对所有的提问都回答“yes”； -c：指定配置文件； -q：安静模式； -v：详细模式； -d：设置调试等级（0-10）； -e：设置错误等级（0-10）； -R：设置yum处理一个命令的最大等待时间； -C：完全从缓存中运行，而不去下载或者更新任何头文件。 参数 install：安装rpm软件包； update：更新rpm软件包； check-update：检查是否有可用的更新rpm软件包； remove：删除指定的rpm软件包； list：显示软件包的信息； search：检查软件包的信息； info：显示指定的rpm软件包的描述信息和概要信息； clean：清理yum过期的缓存； shell：进入yum的shell提示符； resolvedep：显示rpm软件包的依赖关系； localinstall：安装本地的rpm软件包； localupdate：显示本地rpm软件包进行更新； deplist：显示rpm软件包的所有依赖关系。 实例 部分常用的命令包括： 自动搜索最快镜像插件：yum install yum-fastestmirror 安装yum图形窗口插件：yum install yumex 查看可能批量安装的列表：yum grouplist 安装 yum install #全部安装 yum install package1 #安装指定的安装包package1 yum groupinsall group1 #安装程序组group1 更新和升级 yum update #全部更新 yum update package1 #更新指定程序包package1 yum check-update #检查可更新的程序 yum upgrade package1 #升级指定程序包package1 yum groupupdate group1 #升级程序组group1 查找和显示 # 检查 MySQL 是否已安装 yum list installed | grep mysql yum list installed mysql* yum info package1 #显示安装包信息package1 yum list #显示所有已经安装和可以安装的程序包 yum list package1 #显示指定程序包安装情况package1 yum groupinfo group1 #显示程序组group1信息yum search string 根据关键字string查找安装包 删除程序 yum remove | erase package1 #删除程序包package1 yum groupremove group1 #删除程序组group1 yum deplist package1 #查看程序package1依赖情况 清除缓存 yum clean packages #清除缓存目录下的软件包 yum clean headers #清除缓存目录下的 headers yum clean oldheaders #清除缓存目录下旧的 headers 更多实例 # yum /etc/yum.repos.d/ yum 源配置文件 vi /etc/yum.repos.d/nginx.repo # 举个栗子: nginx yum源 [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/6/$basearch/ gpgcheck=0 enabled=1 # yum mirror mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak wget https://mirror.tuna.tsinghua.edu.cn/help/centos/ yum makecache # 添加中文语言支持 LANG=C # 原始语言 LANG=zh_CN.utf8 # 切换到中文 yum groupinstall "Chinese Support" # 添加中文语言支持

VI 编辑器详解
type: item
date: 2020-08-24T13:12:00+08:00
description: vi 功能强大的纯文本编辑器 补充说明 vi命令 是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器。Linux中的vi编辑器叫vim，它是vi的增强版（vi Improved），与vi编辑器完全兼容，而且实现了很多增强功能。 vi编辑器支持编辑模式和命令模式，编辑模式下可以完成文本的编辑功能，命令模式下可以完成对文件的操作命令，要正确使用vi编辑器就必须熟练掌握着两种模式的切换。默认情况下，打开vi编辑器后自动进入命令模式。从编辑模式切换到命令模式使用“esc”键，从命令模式切换到编辑模式使用“A”、“a”、“O”、“o”、“I”、“i”键。 vi编辑器提供了丰富的内置命令，有些内置命令使用键盘组合键即可完成，有些内置命令则需要以冒号“：”开头输入。常用内置命令如下： Ctrl+u：向文件首翻半屏； Ctrl+d：向文件尾翻半屏； Ctrl+f：向文件尾翻一屏； Ctrl+b：向文件首翻一屏； Esc：从编辑模式切换到命令模式； ZZ：命令模式下保存当前文件所做的修改后退出vi； :行号：光标跳转到指定行的行首； :$：光标跳转到最后一行的行首； x或X：删除一个字符，x删除光标后的，而X删除光标前的； D：删除从当前光标到光标所在行尾的全部字符； dd：删除光标行正行内容； ndd：删除当前行及其后n-1行； nyy：将当前行及其下n行的内容保存到寄存器？中，其中？为一个字母，n为一个数字； p：粘贴文本操作，用于将缓存区的内容粘贴到当前光标所在位置的下方； P：粘贴文本操作，用于将缓存区的内容粘贴到当前光标所在位置的上方； /字符串：文本查找操作，用于从当前光标所在位置开始向文件尾部查找指定字符串的内容，查找的字符串会被加亮显示； ？字符串：文本查找操作，用于从当前光标所在位置开始向文件头部查找指定字符串的内容，查找的字符串会被加亮显示； a，bs/F/T：替换文本操作，用于在第a行到第b行之间，将F字符串换成T字符串。其中，“s/”表示进行替换操作； a：在当前字符后添加文本； A：在行末添加文本； i：在当前字符前插入文本； I：在行首插入文本； o：在当前行后面插入一空行； O：在当前行前面插入一空行； :wq：在命令模式下，执行存盘退出操作； :w：在命令模式下，执行存盘操作； :w！：在命令模式下，执行强制存盘操作； :q：在命令模式下，执行退出vi操作； :q！：在命令模式下，执行强制退出vi操作； :e文件名：在命令模式下，打开并编辑指定名称的文件； :n：在命令模式下，如果同时打开多个文件，则继续编辑下一个文件； :f：在命令模式下，用于显示当前的文件名、光标所在行的行号以及显示比例； :set number：在命令模式下，用于在最左端显示行号； :set nonumber：在命令模式下，用于在最左端不显示行号； 语法 vi(选项)(参数) 选项 +<行号>：从指定行号的行开始显示文本内容； -b：以二进制模式打开文件，用于编辑二进制文件和可执行文件； -c<指令>：在完成对第一个文件编辑任务后，执行给出的指令； -d：以diff模式打开文件，当多个文件编辑时，显示文件差异部分； -l：使用lisp模式，打开“lisp”和“showmatch”； -m：取消写文件功能，重设“write”选项； -M：关闭修改功能； -n：不实用缓存功能； -o<文件数目>：指定同时打开指定数目的文件； -R：以只读方式打开文件； -s：安静模式，不现实指令的任何错误信息。 参数 文件列表：指定要编辑的文件列表。多个文件之间使用空格分隔开。 知识扩展 vi编辑器有三种工作方式：命令方式、输入方式和ex转义方式。通过相应的命令或操作，在这三种工作方式之间可以进行转换。 命令方式 在Shell提示符后输入命令vi，进入vi编辑器，并处于vi的命令方式。此时，从键盘上输入的任何字符都被作为编辑命令来解释，例如，a(append）表示附加命令，i(insert）表示插入命令，x表示删除字符命令等。如果输入的字符不是vi的合法命令，则机器发出“报警声”，光标不移动。另外，在命令方式下输入的字符（即vi命令）并不在屏幕上显示出来，例如，输入i，屏幕上并无变化，但通过执行i命令，编辑器的工作方式却发生变化：由命令方式变为输入方式。 输入方式 通过输入vi的插入命令（i）、附加命令（a）、打开命令（o）、替换命令（s）、修改命令(c）或取代命令（r）可以从命令方式进入输入方式。在输入方式下，从键盘上输入的所有字符都被插入到正在编辑的缓冲区中，被当做该文件的正文。进入输入方式后，输入的可见字符都在屏幕上显示出来，而编辑命令不再起作用，仅作为普通字母出现。例如，在命令方式下输入字母i，进到输入方式，然后再输入i，就在屏幕上相应…

Linux firewall-cmd 命令详解
type: item
date: 2020-08-24T13:09:00+08:00
description: firewall-cmd Linux上新用的防火墙软件，跟iptables差不多的工具 补充说明 firewall-cmd 是 firewalld的字符界面管理工具，firewalld是centos7的一大特性，最大的好处有两个：支持动态更新，不用重启服务；第二个就是加入了防火墙的“zone”概念。 firewalld跟iptables比起来至少有两大好处： firewalld可以动态修改单条规则，而不需要像iptables那样，在修改了规则后必须得全部刷新才可以生效。 firewalld在使用上要比iptables人性化很多，即使不明白“五张表五条链”而且对TCP/IP协议也不理解也可以实现大部分功能。 firewalld自身并不具备防火墙的功能，而是和iptables一样需要通过内核的netfilter来实现，也就是说firewalld和 iptables一样，他们的作用都是用于维护规则，而真正使用规则干活的是内核的netfilter，只不过firewalld和iptables的结 构以及使用方法不一样罢了。 命令格式 firewall-cmd [选项 ... ] 选项 通用选项 -h, --help # 显示帮助信息； -V, --version # 显示版本信息. （这个选项不能与其他选项组合）； -q, --quiet # 不打印状态消息； 状态选项 --state # 显示firewalld的状态； --reload # 不中断服务的重新加载； --complete-reload # 中断所有连接的重新加载； --runtime-to-permanent # 将当前防火墙的规则永久保存； --check-config # 检查配置正确性； 日志选项 --get-log-denied # 获取记录被拒绝的日志； --set-log-denied=<value> # 设置记录被拒绝的日志，只能为 'all','unicast','broadcast','multicast','off' 其中的一个； 实例 # 安装firewalld yum install firewalld firewall-config systemctl start firewalld # 启动 systemctl stop firewalld # 停止 systemctl enable firewalld # 启用自动启动 systemctl disable firewalld # 禁用自动启动 systemctl status firewalld # 或者 firewall-cmd --state 查看状态 # 关闭服务的方法 # 你也可以关闭目前还不熟悉的FirewallD防火墙，而使用iptables，命令如下： systemctl stop firewalld systemctl disable firewalld yum install iptables-services systemctl start iptables systemctl enable iptables 配置firewalld firewall-cmd --version # 查看版本 firewall-cmd --help # 查看帮助 # 查看设置： firewall-cmd --state # 显示状态 firewall-cmd --get-active-zones # 查看区域信息 firewall-cmd --get-zone-of-interface=eth0 # 查看指定接口所属区域 firewall-cmd --panic-on # 拒绝所有包 firewall-cmd --panic-off # 取消拒绝状态 firewall-cmd --query-panic # 查看是否拒绝 firewall-cmd --reload # 更新防火墙规则 firewall-cmd --complete-reload # 两者的区别就是第一个无需断开连接，就是firewalld特性之一动态添加规则，第二个需要断开连接，类似重启服务 # 将接口添加到区域，默认接口都在public firewall-cmd --zone=public --add-interface=eth0 # 永久生效再加上 --permanent 然后reload防火墙 # 设置默认接口区域，立即生效无需重启 firewall-cmd --set-default-zone=public # 查看所有打开的端口： firewall-cmd --zone=dmz --list-ports # 加入一个端口到区域： firewall-cmd --zone=dmz --add-port=8080/tc…

Linux iptables 详细说明
type: item
date: 2020-08-24T10:28:00+08:00
description: iptables Linux上常用的防火墙软件 补充说明 iptables命令 是Linux上常用的防火墙软件，是netfilter项目的一部分。可以直接配置，也可以通过许多前端和图形界面配置。 语法 iptables(选项)(参数) 选项 -t, --table table 对指定的表 table 进行操作， table 必须是 raw， nat，filter，mangle 中的一个。如果不指定此选项，默认的是 filter 表。 # 通用匹配：源地址目标地址的匹配 -p：指定要匹配的数据包协议类型； -s, --source [!] address[/mask] ：把指定的一个／一组地址作为源地址，按此规则进行过滤。当后面没有 mask 时，address 是一个地址，比如：192.168.1.1；当 mask 指定时，可以表示一组范围内的地址，比如：192.168.1.0/255.255.255.0。 -d, --destination [!] address[/mask] ：地址格式同上，但这里是指定地址为目的地址，按此进行过滤。 -i, --in-interface [!] <网络接口name> ：指定数据包的来自来自网络接口，比如最常见的 eth0 。注意：它只对 INPUT，FORWARD，PREROUTING 这三个链起作用。如果没有指定此选项， 说明可以来自任何一个网络接口。同前面类似，"!" 表示取反。 -o, --out-interface [!] <网络接口name> ：指定数据包出去的网络接口。只对 OUTPUT，FORWARD，POSTROUTING 三个链起作用。 # 查看管理命令 -L, --list [chain] 列出链 chain 上面的所有规则，如果没有指定链，列出表上所有链的所有规则。 # 规则管理命令 -A, --append chain rule-specification 在指定链 chain 的末尾插入指定的规则，也就是说，这条规则会被放到最后，最后才会被执行。规则是由后面的匹配来指定。 -I, --insert chain [rulenum] rule-specification 在链 chain 中的指定位置插入一条或多条规则。如果指定的规则号是1，则在链的头部插入。这也是默认的情况，如果没有指定规则号。 -D, --delete chain rule-specification -D, --delete chain rulenum 在指定的链 chain 中删除一个或多个指定规则。 -R num：Replays替换/修改第几条规则 # 链管理命令（这都是立即生效的） -P, --policy chain target ：为指定的链 chain 设置策略 target。注意，只有内置的链才允许有策略，用户自定义的是不允许的。 -F, --flush [chain] 清空指定链 chain 上面的所有规则。如果没有指定链，清空该表上所有链的所有规则。 -N, --new-chain chain 用指定的名字创建一个新的链。 -X, --delete-chain [chain] ：删除指定的链，这个链必须没有被其它任何规则引用，而且这条上必须没有任何规则。如果没有指定链名，则会删除该表中所有非内置的链。 -E, --rename-chain old-chain new-chain ：用指定的新名字去重命名指定的链。这并不会对链内部造成任何影响。 -Z, --zero [chain] ：把指定链，或者表中的所有链上的所有计数器清零。 -j, --jump target <指定目标> ：即满足某条件时该执行什么样的动作。target 可以是内置的目标，比如 ACCEPT，也可以是用户自定义的链。 -h：显示帮助信息； 基本参数 参数 作用 -P 设置默认策略:iptables -P INPUT (DROP ACCEPT) -F 清空规则链 -L 查看规则链 -A 在规则链的末尾加入新规则 -I num 在规则链的头部加入新规则 -D num 删除某一条规则 -s 匹配来源地址IP/MASK，加叹号"!"表示除这个IP外。 -d 匹配目标地址 -i 网卡名称 匹配从这块网卡流入的数据 -o 网卡名称 匹配从这块网卡流出的数据 -p 匹配协议,如tcp,udp,icmp --dport num 匹配目标端口号 --sport num 匹配来源端口号 命令选项输入顺序 iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j …

ip6tables 使用方法
type: item
date: 2020-08-24T10:25:00+08:00
description: ip6tables linux中防火墙软件 补充说明 ip6tables命令 和iptables一样，都是linux中防火墙软件，不同的是ip6tables采用的TCP/ip协议为IPv6。 语法 ip6tables(选项) 选项 -t<表>：指定要操纵的表； -A：向规则链中添加条目； -D：从规则链中删除条目； -i：向规则链中插入条目； -R：替换规则链中的条目； -L：显示规则链中已有的条目； -F：清楚规则链中已有的条目； -Z：清空规则链中的数据包计算器和字节计数器； -N：创建新的用户自定义规则链； -P：定义规则链中的默认目标； -h：显示帮助信息； -p：指定要匹配的数据包协议类型； -s：指定要匹配的数据包源ip地址； -j<目标>：指定要跳转的目标； -i<网络接口>：指定数据包进入本机的网络接口； -o<网络接口>：指定数据包要离开本机所使用的网络接口。 -c<计数器>：在执行插入操作（insert），追加操作（append），替换操作（replace）时初始化包计数器和字节计数器。 实例 在命令行窗口输入下面的指令就可以查看当前的 IPv6 防火墙配置： ip6tables -nl --line-numbers /etc/sysconfig/ip6tables文件 使用编辑器编辑/etc/sysconfig/ip6tables文件： vi /etc/sysconfig/ip6tables 可能会看到下面的默认 ip6tables 规则： *filter :INPUT accept [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :RH-Firewall-1-INPUT - [0:0] -A INPUT -j RH-Firewall-1-INPUT -A FORWARD -j RH-Firewall-1-INPUT -A RH-Firewall-1-INPUT -i lo -j ACCEPT -A RH-Firewall-1-INPUT -p icmpv6 -j ACCEPT -A RH-Firewall-1-INPUT -p 50 -j ACCEPT -A RH-Firewall-1-INPUT -p 51 -j ACCEPT -A RH-Firewall-1-INPUT -p udp --dport 5353 -d ff02::fb -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT -A RH-Firewall-1-INPUT -p udp -m udp --dport 32768:61000 -j ACCEPT -A RH-Firewall-1-INPUT -p tcp -m tcp --dport 32768:61000 ! --syn -j ACCEPT -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -j ACCEPT -A RH-Firewall-1-INPUT -j reject --reject-with icmp6-adm-prohibited COMMIT 与 IPv4 的 iptables 规则类似，但又不完全相同。 要开启 80 端口（HTTP 服务器端口），在 COMMIT 一行之前添加如下规则： -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 80 -j ACCEPT -p tcp表示仅针对 tcp 协议的通信。--dport指定端口号。 要开启 53 端口（DNS 服务器端口），在 COMMIT 一行之前添加如下规则： -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 53 -j ACCEPT -A RH-Firewall-1-INPUT -m udp -p tcp --dport 53 -j ACCEPT 同时针对 tcp 和 udp 协议开启 53 端口。 要开启 443 端口，在 COMMIT 一行之前添加如下规则： -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 443 -j ACCEPT 要开启 25 端口（SMTP 邮件服务器端口），在 COMMIT 一行之前添加如下规则： -A RH-Firewall-1-INPUT -m tcp -p tcp --dport 25 -j ACCEPT 对于那些没有特定规则与之匹配的数据包，可能是我们不想…

linux中nmcli命令使用及网络配置
type: item
date: 2020-08-24T01:40:00+08:00
description: nmcli命令与配置文件对应关系 主机名： 如果说你没有设置主机名的话，默认:localhost.localdomain 修改配置文件的主机名: # hostnamectl set-hostname server.host.com 查看网卡信息 nmcli connection nmcli con show 显示具体的网络接口信息 nmcli connection show `System eth0` 显示所有设配状态 nmcli device status 修改配置文件执行生效 nmcli connection reload 注：如果不行，可尝试以下命令 # 重载所有ifcfg或route到connection（不会立即生效） nmcli c reload ifcfg-xxx # 重载指定ifcfg或route到connection（不会立即生效） nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX nmcli c load /etc/sysconfig/network-scripts/route-ethX # 立即生效connection，有3种方法 nmcli c up ethX nmcli d reapply ethX nmcli d connect ethX 显示所有活动连接 nmcli connection show --active 删除一个网卡连接 nmcli connection delete `System eth0` 添加一个网卡连接 nmcli connection add type ethernet con-name `System eth0` ifname eth0 网络接口的启用与停用： 停用： nmcli connection down `System eth0` 启用： nmcli connection up `System eth0` 给eth0添加一个IP（IPADDR） nmcli connection modify `System eth0` ipv4.addresses 10.10.12.1 给eth0添加一个子网掩码（NETMASK） nmcli connection modify `System eth0` ipv4.addresses 10.10.12.1/24 IP获取方式设置成手动（BOOTPROTO=static/none） nmcli connection modify `System eth0` ipv4.method manual 添加一个ipv4 nmcli connection modify `System eth0` +ipv4.addresses 10.10.12.2/24 删除一个ipv4 nmcli connection modify `System eth0` ipv4.addresses 10.10.12.2/24 添加DNS nmcli connection modify `System eth0` ipv4.dns 114.114.114.114 删除DNS # nmcli connection modify `System eth0` -ipv4.dns 114.114.114.114 添加一个网关（GATEWAY） # nmcli connection modify `System eth0` ipv4.gateway 192.168.0.2 可一块写入： nmcli connection modify `System eth0` ipv4.dns 114.114.114.114 ipv4.gateway 10.10.12.254

远程桌面中转，基于 UltraVNC Repeater（中继器）的远程桌面服务搭建，用于复杂网络环境
type: item
date: 2020-05-23T22:43:00+08:00
description: 概述 常见的远程桌面服务，大多数是点对点的，需要控制端和被控制端双方互相能够连通，若不在同一个局域网内，仅仅通过内网 ip 地址和端口，是不能直接远程桌面的，所以需要一个服务器来中转双方的数据，这样只要大家能够连通服务器，那么任意两台 PC 都可以互相远程桌面。市面上出现的 TeamViewer 和向日葵，原理应该也是这样的。本文讲解如何使用 UltraVNC 搭建远程桌面服务器，并介绍如何用 Java 代码调用。 如下图所示：两个不同的局域网A、B，PC1、2、3无法直接 ping PC4、5、6，但是全部都能连通 Server（中继器服务），那么任意两台机器都可以用 UltraVNC 互相远程。 搭建 UltraVNC Repeater 中继器服务器 可以根据服务器环境选择在 windows 上或者 linux 上面搭建，UltraVNC 官网只有 windows 端的源代码和可执行程序，本文提供 centos 版本的源代码，下面介绍。 windows 端搭建 下载可执行文件 ultravncrepeater1400 直接运行即可 ： 中继器 UltraVNC Viewer 监听端口: 名称 描述 中继器服务器 ip 运行 repeater 的服务器地址 中继器 UltraVNC Server 监听端口 5500 中继器 UltraVNC Viewer 监听端口 5901 WEB 端管理页面 浏览器中直接访问中继器 ip 地址，端口默认 80 centos 端搭建 csdn 上传的资源默认 5 个积分，后来会自动增长，我修改后发现没有用，您可以下载百度云的资源 下载 uvncrepeater 源代码 本站下载: uvncrep017-ws.tar.gz 百度云：https://pan.baidu.com/s/13OcU1QAL6eqKFnFWG8mPrw 提取码 1234 解压源代码文件 tar -xvf uvncrep017-ws.tar 编译并安装 cd uvncrep017-ws make & make install 为中继器服务添加一个用户 useradd uvncrep 根据需要编辑配置文件 /etc/uvnc/uvncrepeater.ini ，默认如下 viewerport = 5901 maxsessions = 10 runasuser = uvncrep logginglevel = 2 srvListAllow1 = 192.168.0.0 ;Allow network 192.168.x.x srvListDeny0 = 127.0.0.1 ;Deny loopback requirelistedserver=1 启动服务 /etc/init.d/uvncrepeater start 客户端安装 UltraVNC Server 和 UltraVNC Viewer UltraVNC 下载地址，若地址失效，可去官网下载 启动 UltraVNC Server 打开 cmd 命令行，切换到软件根目录，执行 // 命令行参数如下 // id number: 被控制端编号（只能是数字，唯一，且至少三位，即最小是 100，最大是 2147483647，源码中此为 int 类型） // ip: repeater 中继器服务器 IP // port: 中继器 UltraVNC Server 监听端口 winvnc.exe -autoreconnect ID:[id number]-connect [repeater ip]:[server listen port] -run // 示例如下 winvnc.exe -autoreconnect ID:10001 -connect 192.168.1.2:5500 -run 启动 UltraVNC Viewer 打开 cmd 命令行，切换到软件根目录，执行 // 命令行参数如下 // id number: 被控制端编号（只能是数字，唯一，且至少三位，即最小是 100，最大是 2147483647，源码中此为 int 类型） // ip: repeater 中继器服务器 IP // port: 中继器 UltraVNC Viewer 监听端口 vncviewer.exe -proxy [repeater ip]:[viewer listen port] ID:[id number] // 示例如下 vncviewer.exe -proxy 192.168.1.2:5901 ID:10001 ···