首页
关于本博客
友情链接
推荐
linux/shell
Search
1
LEDE官方固件安装中文语言包的方法
11,087 阅读
2
LEDE固件踢出弱信号客户端,实现WiFi无缝漫游脚本
9,183 阅读
3
基于CloudFlare API的纯Shell动态DNS(DDNS)脚本
8,153 阅读
4
一次OpenVPN交叉编译笔记
6,664 阅读
5
利用iptables的string模块来屏蔽域名(关键词匹配)
6,111 阅读
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
登录
Search
标签搜索
nginx
OpenWrt
openvpn
SSH
seafile
cloudflare
iptables
openssl
linux
letsencrypt
CentOS
反向代理
ftp
openvpn配置模板
vsftpd
seafile网盘
Linux启动脚本
ddns
nas
seafile服务器
自渡
累计撰写
75
篇文章
累计收到
1
条评论
首页
栏目
study
OpenWrt/LEDE
网络技术
数通
HCNP/CCNP
linux
shell
CentOS
Ubuntu/Debian
php
Linux应用
C#
C/C++
虚拟化
IDC
杂项
MySQL
运维笔记
zabbix
seafile
openvpn
QEMU/KVM
windows
html
nginx
互联网应用
IP地址段汇总
页面
关于本博客
友情链接
推荐
linux/shell
搜索到
13
篇与
shell
的结果
2018-10-29
解决shell脚本执行时提示非法字符^M的办法
最近在执行自己编写的shell脚本时老是遇到bash报错,提示脚本中含有^M的非法字符,而我cat以及vi进去却看不到任何^M字符,查阅了很多相关资料,才想起来,因为这个shell脚本是我在windows下使用notepad++编写的,而在windows里面,编辑器对文末换行符号的处理是使用^M字符来代表,这与Linux是不同的,所以当脚本被传到linux里面就会报错,为了去除这个字符,我总结出了两个比较常用的办法:第一种办法:使用vi编辑脚本文件,按esc进入命令行,输入:set ff?就可以看到,当前文本的格式为DOS,使用:set ff=unix命令即可将其改为unix格式,然后:wq保存即可第二种方法:使用sed来替换当中的^M字符sed -i 's/^M//g' 脚本路径
2018年10月29日
3,069 阅读
0 评论
0 点赞
2018-08-18
开源虚拟隧道创建程序VTun编译及配置详解
程序简介vtun是一款开源、轻量级的网络虚拟隧道创建程序,VTun可以通过TCP/IP协议为企业在公网上建立安全的VPN隧道。VTun的功能与OpenVPN类似,都是使用了Linux内核中的虚拟网卡TUN/TAP设备,同时它也支持PPP设备,能够提供多种形式的隧道。但是VTun与OpenVPN的区别是:VTun的隧道是一对一的,即隧道内仅有客户端和服务器两端,不像OpenVPN一样可以设置一个网段和分配不同IP给多个客户端,灵活性略逊后者。 VTun更适合应用于企业总公司与分公司远程组网的场景,直接部署于网关。部署和测试的系统环境客户端:Linux CentOS 7.3 ARM(树莓派3b)服务端:Linux CentOS 6.9 x86_64 (KVM VPS主机)系统内核必须有TUN/TAP和PPP模块,VPS主机须母机的支持。这里只测试RedHat系的系统,Debian系的类似。部署和测试的系统环境下载及编译程序先安装依赖yum install -y openssl openssl-devel zlib zlib-devel bison byacc flex gcc wget ppp lzo lzo-devel git下载程序源码cd /usr/src && git clone https://github.com/VTun/VTun cd /usr/src/VTun && ./configuremake && make install对配置文件进行修改编译完成后,默认的配置文件在/etc/vtund.conf,二进制文件在/sbin/vtund。程序启动时,将会通过读取/etc/vtund.conf配置文件来建立虚拟隧道。该文件内也给出了许多配置例子以供参考。VTun所能提供的隧道类型有IP隧道(tun)、以太网隧道(tap)、串行隧道(支持所有通过串行隧道工作的协议,如PPP、SLIP等等)、pipe隧道(支持通过Unix pipe工作的隧道)。用户可以根据环境的需求来选择合适的隧道类型以及协议。我仅测试了TUN和PPP隧道,而PPP隧道在进行连接时总是报找不到伪终端的错误(Can't allocate pseudo tty,No such file or directory.),调试多次无果,且由于相关资料较少,最终放弃了PPP隧道,如果有大佬知道如何解决还请留言多多指教。而TUN隧道的测试较为顺利,下面贴出TUN/TAP隧道的配置:TUN/TAP隧道服务端配置:#option字段是全局选项,包括监听的端口及定义使用到的二进制文件目录 options { port 5000; #服务器所监听的端口,默认为5000 bindaddr { iface eth0; }; #服务监听的网卡,一般为eth0 syslog daemon; #开启daemon模式,即守护模式,使程序在后台运行 ppp /usr/sbin/pppd; #这是一些二进制文件的目录,默认无需改动 ifconfig /sbin/ifconfig; route /sbin/route; firewall /sbin/ipchains; ip/sbin/ip;}#此处是定义默认会话的选项,将会应用于整个文件内的所有隧道 default { compress no; #compress决定是否对数据压缩,默认为no,压缩方法可选zlib和lzo speed 0; #speed选项可对隧道总速度进行限制,默认为0不限制,限速单位为KB/s } #以下是配置隧道选项,可一次性添加多个字段,即多条隧道,下列以tunnel1为例 tunnel1 { passwd XXXXXX; #此处定义隧道的密钥 type tun; #type选项可根据需求选择tun或者tap proto tcp; #proto是选择隧道通信所使用的协议,在国内运营商对UDP包大幅丢包的状态下,建议选择TCP以建立可靠的连接 device tun0; #隧道建立后,tun虚拟网卡的名称,不得与当前已有的设备重名 compress no; #压缩数据,同default字段里的compress encrypt no; #选择是否加密,加密有多种选项,当你不认为你处在一个可靠的网络内时,建议启用,默认加密方式为blowfish128ecb keepalive yes; # 该选项可隔一段时间ping对端以确认会话的状态,若客户端在NAT网关或者防火墙后,建议开启 stat yes; # 在日志里面记录隧道连接状态 #up字段是隧道在连接后,所执行的命令,即开启一个虚拟网络设备 up { #该选项表示隧道内,本地IP为10.221.96.10,对端IP为10.221.96.11,客户端在配置时应与之相对应 ifconfig "%% 10.221.96.10 pointopoint 10.221.96.11 mtu 1450"; }; down { #在隧道关闭时所执行的命令,即关闭网卡 ifconfig "%% down"; }; }TUN/TAP隧道客户端配置options { port 5000; timeout 60; #此处选项是设置连接到对端的超时时间,单位为秒 ppp/usr/sbin/pppd; ifconfig/sbin/ifconfig; route/sbin/route; firewall/sbin/ipchains; ip/sbin/ip; } #tunnel1字段是为了连接上面服务端的tunnel1隧道 tunnel1 { passwd XXXXXX; #隧道密码,只有与服务器一致才可连接成功 #以下选项同上 type tun; proto tcp; compress no; encrypt no; keepalive yes; stat yes; device tun0; persist yes; #开启此选项后,当物理网络出现问题时,可确保虚拟网卡tun设备不会处于down状态 up { ifconfig "%% 10.221.96.11 pointopoint 10.221.96.10 mtu 1450"; #该选项应该与服务端相对应,IP不得冲突,mtu应保持一致 }; down { ifconfig "%% down"; }; }启动VTunVTun的二进制文件为/sbin/vtund;服务端的启动命令为:vtund -s -f /etc/vtund.conf客户端的启动命令为:vtund -f /etc/vtund.conf tunnel1 $SERVER_IP其中-s选项表示程序以服务端运行,-f表示从配置文件中读取,在客户端启动命令中,tunnel1作为隧道的名称,应该加入到vtund -f /etc/vtund.conf后面,并且最后应填上对端服务器的外网IP。总结VTun作为轻量级网络隧道软件,与OpenVPN相比,配置也非常简单,根据官方介绍,它同OpenVPN一样也可以采用SSL来确保服务器不被仿冒,只能建立一对一隧道这一特性,决定了它更适合部署在网关/路由设备上,而openvpn极高的安全性以及多客户端的特性,决定了它更适合用于客户端-服务器这一模式,如出差员工通过手机、笔记本电脑连接至公司网关这一情景,能够保证员工在安全未知的网络环境下,仍然能通过SSL/TLS来建立安全的连接。
2018年08月18日
4,938 阅读
0 评论
0 点赞
2018-08-08
lftp命令的用法
在Linux下的常用的ftp客户端程序是ftp命令,而传统的ftp命令并不支持使用了SSL加密的FTP服务器。lftp是一款Linux平台下优秀的FTP客户端程序,它支持连接带SSL加密的FTP服务器。常用命令lftp进入命令行界面open登录命令格式open 用户名@服务器名/IP地址:端口号常用操作选项ls 列出该目录下的所有内容 cd 改变目录 get 文件名 从服务器上下载一个文件 put 文件名 上传一个文件到服务器 mget 文件名 批量下载 mput 批量上传
2018年08月08日
2,622 阅读
0 评论
0 点赞
2018-06-29
在Linux主机下配置基于源IP的策略路由
Linux系统自带的ip命令功能十分强大,选项也十分丰富,在使用Linux主机当网关,多ISP接入的环境下,常用的方式就是根据AS号来选择路由,即多用户共同使用一张路由表。而因系统自带的默认路由无法根据源IP进行选路,所以仅依靠默认路由来无法使资源得到充分的利用,这时候就可以利用ip命令来配置基于源IP的策略路由。其实系统维护着很多张的路由表,默认路由表只是其中的一张,路由表文件位于/etc/iproute2/rt_tables当中,其中255是本地路由表;254是主路由表;253是默认路由表和0则是系统保留的路由表,用户自定义路由表编码可在1-252之间。可以在/etc/iproute2/rt_tables文件里加上自定义的路由表并且命名,比如100 isp1 101 isp2保存后,接下来就是自定义策略路由,让网关根据源ip来进行选路,假设ISP1的网关为172.16.0.1,ISP2的网关为172.17.0.1,首先往路由表100里面配置规则ip route add 0.0.0.0/0 via 172.16.0.1 table 100或者也可以用路由表名称代替号码ip route add 0.0.0.0/0 via 172.16.0.1 table isp1这条路由就定义了到ISP1的默认路由,而ISP2也同理ip route add 0.0.0.0/0 via 172.17.0.1 table isp2两条路由都配置完毕后,就应该配置策略,匹配源IP与查询的路由表。ip rule add from 192.168.0.0/24 table isp1 ip rule add from 192.168.1.0/24 table isp2这条规则表示源IP是192.168.0.0/24网段的,查询名称为isp1的路由表,而源IP是192.168.1.0/24的则查询名称为isp2的路由表,这样配置后的效果就是,192.168.0.0/24网段的用户下一跳路由为172.16.0.1,即通过ISP1的线路上网,而192.168.1.0/24网段的用户则下一跳为172.17.0.1,通过ISP2的线路上网。这样就能通过动态调整用户路由的方式来合理使用带宽资源,避免带宽浪费和多用户共用出口导致拥堵。
2018年06月29日
2,784 阅读
0 评论
0 点赞
2018-05-31
使用postfix+dovecot+opendkim+squirrelmail搭建满分的邮件服务器
前提&软件固定IP服务器(VPS/独服)一台,最好是海外主机、顶级域名一个使用到的软件:postfix dovecot opendkim squirrelmailpostfix:搭建smtp服务器,用于发送邮件dovecot:搭建imap和pop3服务器,用于接收邮件opendkim:生成域名的dkim,能防止垃圾邮件squirrelmail:一款用php开发的web模板,能够通过网页收发邮件前期准备第一步:为主机IP配置PTR(反向域名解析),海外主机大都可以直接配置,而国内阿里云主机可以发工单修改,其他服务商暂不清楚,这也是为什么要选择海外主机的原因。第二步:为域名配置MX记录:到域名解析提供商处配置MX记录,因为MX记录直接解析到IP地址是不符合规范的,所以应先配置一个A记录,如配置记录为mail,地址指向服务器IP,然后再新建一个MX类型记录,记录值为mail.yourdomain.com,即指向刚才配的A记录。第三步:为域名配置一条TXT记录,即在域名解析提供商处配置一条记录类型为TXT的记录,记录内容格式为v=spf1 a mx include:mail.yourdomain.com ~all ,这条记录能够有效地防止自己的域名被垃圾邮件发送者伪造。第四步:防火墙放行相关端口,即TCP 25(SMTP),465(SMTPS),143(IMAP),993(IMAPS)端口,POP3因为我没使用,所以暂时未配置。具体配置(iptables):iptables -I INPUT 1 -i lo -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT安装和配置postfixpostfix可以通过源码编译,也可以通过yum或者apt-get来安装,这里就介绍CentOS下通过yum安装与配置的过程。禁用sendmailkillall sendmail chkconfig sendmail offyum安装yum install -y postfix打开主配置文件vi /etc/postfix/main.cf找到mydomain这一行,将#去掉,等号右侧添加自己的域名mydomain = yourdomain.com找到inet_interfaces这行,改为inet_interfaces = 127.0.0.1,你的主网卡ip(通过ifconfig查看)配置smtp认证功能(使用本地用户即shadow认证)yum install -y cyrus-sasl-plain编辑/etc/sysconfig/saslauthd文件,修改如下MECH=shadow在/etc/sasl2目录下找到smtpd.conf(若没有则创建一个)添加如下行pwcheck_method: saslauthd mech_list: plain login启动saslauthd/etc/init.d/saslauthd start然后在/etc/postfix/main.cf中加入以下行smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = '' smtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination broken_sasl_auth_clients=yes smtpd_client_restrictions = permit_sasl_authenticated接下来是配置SSL,即SMTPS,可根据自己需求配置。smtpd_sasl_security_options = noanonymous smtpd_use_tls = yes smtpd_tls_cert_file = 你的证书存放目录,最好使用权威机构颁发的 smtpd_tls_key_file = 你的私钥存放目录 smtpd_tls_session_cache_database = btree:/etc/postfix/smtpd_scache 在/etc/postfix/master.cf文件中添加如下行 smtps inet n - n - - smtpd -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes安装和配置dovecotdovecot默认的认证方式为本地用户认证方式,为了和postfix认证方式一致,这里就使用默认的认证方式。使用yum安装yum install -y dovecot在/etc/dovecot/dovecot.conf第20行中去除#号,配置如下protocols = imap pop3编辑/etc/dovecot/conf.d/10-master.conf中的文件,取消18、21、 83、 84行的注释inet_listener imap { inet_listener imaps { user = postfix group = postfix为dovecot配置SSL加密vi /etc/dovecot/conf.d/10-ssl.conf第6、12、13行取消注释,在12、13行配上SSL证书和私钥ssl = yes ssl_cert = <证书存放目录 ssl_key = <私钥存放目录配置OPENDKIMDKIM是域名密钥识别邮件标准,它可以让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送,电子邮件收件人则可以使用签名来证实邮件确实来自该企业。具体方法可参考:https://www.v2ex.com/t/161912使用yum安装yum install opendkim mkdir -p /var/run/opendkim chown -R opendkim:opendkim /var/run/opendkim编辑配置文件/etc/opendkim.conf加入配置如下:(Debian,Ubuntu主机还需要在/etc/default/opendkim里面进行额外配置)Canonicalization relaxed/relaxed ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable LogWhy Yes MinimumKeyBits 1024 Mode sv PidFile /var/run/opendkim/opendkim.pid SigningTable refile:/etc/opendkim/SigningTable Socket inet:8891@127.0.0.1 Syslog Yes SyslogSuccess Yes TemporaryDirectory /var/tmp UMask 022 UserID opendkim:opendkim创建你的域名对应的密钥mkdir /etc/opendkim/keys/yourdomain.com opendkim-genkey -D /etc/opendkim/keys/yourdomain.com/ -d yourdomain.com -s default密钥创建完毕后,还必须保证程序启动时有足够的权限读取chown -R opendkim:opendkim /etc/opendkim/配置/etc/opendkim/KeyTable文件echo "default._domainkey.yourdomain.com yourdomain.com:default:/etc/opendkim/keys/yourdomain.com/default.private" >> /etc/opendkim/KeyTable配置/etc/opendkim/SigningTable文件echo "*@yourdomain.com default._domainkey.yourdomain.com">> /etc/opendkim/SigningTable在/etc/opendkim/TrustedHosts中加入允许进行签名的主机,一般是本机,默认不需要改动,只需确保其中有127.0.0.1和::1即可。接下来就是到域名解析提供商处配置域名DKIM记录在/etc/opendkim/keys/yourdomain.com/目录中找到default.txt文件,这就是公钥文件新建一个TXT类型域名记录,记录值配置为default.txt中文件从v=DKIM1到p=xxx,即括号内的文本,保存后即可。最后将以下内容加入/etc/postfix/main.cf中即可smtpd_milters = inet:127.0.0.1:8891 non_smtpd_milters = inet:127.0.0.1:8891 milter_protocol = 2 milter_default_action = accept在启动opendkim时,还得为域名配置dmarc记录,具体步骤就是到域名解析提供商处添加一条TXT类型记录,记录值为_dmarc,记录内容为v=DMARC1;p=quarantine;rua=mailto:YourEmail。正确地配置dmarc与dkim能够降低被识别为SPAM的概率。启动相关服务执行以下命令以启动服务postfix start /etc/init.d/dovecot start /etc/init.d/opendkim start安装squirrelmail(可选)前提:Nginx/Apache+PHP环境下载页面: http://www.squirrelmail.org/download.php下载后解压到web根目录,需要将该目录拥有者设为web服务器的运行用户,如我的配置:chown -R www:www /home/wwwroot/squirrelmail mkdir -p /var/local/squirrelmail chown -R www:www /var/local/squirrelmail切换到目录下并运行交互式脚本进行配置cd /home/wwwroot/squirrelmail && ./configure进入2选项,配置好DOMAIN,SMTP和IMAP服务器即可Domain项填写你的域名SMTP服务器填写127.0.0.1:25,Authtype配置为LOGINIMAP服务器填写为127.0.0.1:143保存后即可
2018年05月31日
4,174 阅读
0 评论
0 点赞
1
2
3