分类目录归档:原创技术文章

MikroTik RouterOS 端口映射甜糖

ros_pppoe是拨号的interface

chain=srcnat action=masquerade out-interface=ros_pppoe log=no log-prefix=””

端口映射,三个端口根据自己的情况来
chain=dstnat action=dst-nat to-addresses=192.168.5.10 protocol=tcp in-interface=ros_pppoe dst-port=38945,12136,42573 log=no log-prefix=””
chain=dstnat action=dst-nat to-addresses=192.168.5.10 protocol=udp in-interface=ros_pppoe dst-port=38945,12136,42573 log=no log-prefix=””

 


原来我的ros一直没有 out-interface=ros_pppoe,加上这个,甜糖就可以了。

群晖升级dsm后,vpn套件报不兼容,停止服务。

升级了dsm,本来的vpn套件是1.4.4-2855,没有更新的版本,但是升级后,就停止服务了。说:安装的套件与您的dsm不兼容
找了一圈没有更新的版本,但是说明有,于是拼了个url,

https://global.download.synology.com/download/Package/spk/VPNCenter/1.4.6-2892/VPNCenter-x86_64-1.4.6-2892.spk?model=DS220%2B&bays=2&dsm_version=7.0.1&build_number=42218

下载后手工安装 ok。

之后发现了这个网站。
https://www.synoforum.com/resources/latest-versions-of-dsm-srm-and-packages.165/

mikrotik routeros auto send pppoe ip email script

email的发送设置,可以从 Tools / Email 进行设置,测试看是否可以成功发送。
代码如下,代码记得前后要有大括号!!
{#上网接口名称
:local PPPInterface "ros_pppoe";
#设备名称
:local whoami "Hi,";
#发送Email的主题
:local Themes "ROS Email Assistant";
#发送内容
:local Contents "IP Address: ";
:local SendEmailTo "xxxxx@qq.com";
#获取接口IP地址
:local getip [ /ip address get [/ip address find interface=$PPPInterface ] address ];
:global IPAddress [:pick $getip 0 [:find $getip "/" ] ];
#获取system版本
:global ROSVersion ("RouterOS Version: v" . [/system package get [/system package find name=routeros] version] );
#发送Email设置
/tool e-mail send to=$SendEmailTo subject=$Themes body=("$whoami\n$Contents$IPAddress\n$ROSVersion");
#日志提醒
:log warning "系统数据已备份,邮件已发送至($SendEmailTo)";
:log warning ("外网IP =" ."$IPAddress");
}

群晖的ddns获取公网ip不正确的问题

群晖设置ddns和quickconnect,如果内网有旁路由,会有问题,先手工指定网关,完成upnp的设置,再改回来,利用本身的功能进行一下端口映射,之后就没问题了。

遇到了问题获取公网ip不对,是因为旁路由设置了国外ip走代理,群晖判断ip地址的服务器应该是在国外,所以获取的地址不是实际的nas地址。

旁路由的梯子改成gfw的规则就行,或者可以将群晖的服务器设置为白名单,直接链接?不过我不知道他们的域名。困扰了多天,可以解决了。。

yii 邮件发送问题解决

yii邮件发送,一直报错

Swift_TransportException
Expected response code 250 but got code “550”, with message “550 5.7.1 Request not taken sender domain mismatch !

其实说的比较清楚了。是Request not taken sender domain mismatch

但是web.php已经修改了,找了半天,发现

config\params.php

下面的adminEmail也要修改成一致的才行。

如何让外网访问小米路由器的硬盘文件

解决只能lan口访问,不能wan口访问硬盘资源的问题。

1、小米路由器要开启ssh
2、ssh到小米路由器,编辑/etc/samba/smb.conf.template 文件,将其中的interfaces那一行改为

interfaces = br-lan eth0.2

3、编辑/etc/config/firewall文件,在文件最后添加以下内容:

config rule 'samba_udp'                                
        option src 'wan'                    
        option dest_port '137 138'             
        option proto 'udp'                                  
        option target 'ACCEPT'                  
        option name 'samba_incoming_udp'

config rule 'samba_tcp'        
        option src 'wan'                                   
        option dest_port '139 445'            
        option proto 'tcp'                
        option target 'ACCEPT'                 
        option name 'samba_incoming_tcp'

4、执行/etc/init.d/samba restart命令重启samba服务
5、执行/etc/init.d/firewall restart命令重启防火墙

用\\xxx.xxx.xxx.xxx 访问试试。xxx是小米路由器的wan ip地址

nginx日志按天切割的脚本

本脚本原版来自 lnmp.org,修改如下:
不需要写每个日志文件,除了error日志,其他的都自动切割
不按照年月分目录,放在一个目录,这样好处理点。
用法就是放在服务器上 chmod +x,然后加到crontab里

cat /root/bin/cut_nginx_logs.sh
#!/bin/bash
#function:cut nginx log files for lnmp
#author: http://lnmp.org
#modified by http://www.juyimeng.com/lnmp-nginx-log-cut-per-day-rotation.html

#set the path to nginx log files
log_files_path="/home/wwwlogs/"
#log_files_dir=${log_files_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")
log_files_dir=${log_files_path}bak/
#set nginx log files you want to cut
#get log files list,exclude error.log
log_files_name=($(/bin/find $log_files_path -maxdepth 1 -name "*.log" |grep -v error| awk -F/ '{ print $NF }'))
#set the path to nginx.
nginx_sbin="/usr/local/nginx/sbin/nginx"
#Set how long you want to save
save_days=15
############################################
#Please do not modify the following script #
############################################
mkdir -p $log_files_dir
log_files_num=${#log_files_name[@]}

#cut nginx log files
for((i=0;i<$log_files_num;i++));do
mv ${log_files_path}${log_files_name[i]} ${log_files_dir}$(date -d "yesterday" +"%Y%m%d_%s")_${log_files_name[i]}
done
#delete $save_days ago nginx log files
find $log_files_path -mtime +$save_days -exec rm -rf {} \;
#reload nginx
$nginx_sbin -s reload

openwrt shadowsocks chinadns 自动脚本

k2定时脚本

root@K2:~# crontab -l
0 1 * * *  /etc/shadowsocks/update.sh    >> /var/log/shadowsocks_watchdog.log 2>&1
*/10 * * * * /etc/shadowsocks/checknet.sh  >> /var/log/shadowsocks_watchdog.log 2>&1
0 1 * * 7 echo "" > /var/log/shadowsocks_watchdog.log

更新ip地址

root@K2:~# cat /etc/shadowsocks/update.sh
wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ \
{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > /etc/chinadns_chnroute.txt \
 && /etc/init.d/shadowsocks restart && /etc/init.d/chinadns restart
root@K2:~#
检查网络状态,发现有问题就重启
root@K2:~# cat /etc/shadowsocks/checknet.sh
#!/bin/sh

LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
wget --spider --quiet --tries=1 --timeout=10 www.google.co.jp
if [ "$?" == "0" ]; then
        echo '['$LOGTIME'] No Problem.'
        exit 0
else
        wget --spider --quiet --tries=1 --timeout=10 www.baidu.com
        if [ "$?" == "0" ]; then
                echo '['$LOGTIME'] Problem decteted, restarting shadowsocks.'
                /etc/init.d/shadowsocks restart
                /etc/init.d/chinadns restart
        else
                echo '['$LOGTIME'] Network Problem. Do nothing.'
        fi
fi
root@K2:~#