今天,vps发现修改了INPUT的默认policy后,git pull无法使用。
代码语言:javascript复制iptables -P INPUT DROP
git pull
# 失败,报
ssh: Could not resolve hostname github.com: Temporary failure in name resolution
fatal: Could not read from remote repository.
现象是长时间阻塞。
添加日志
代码语言:javascript复制iptables -A INPUT -m limit --limit 40/min -j LOG --log-prefix "Iptables" --log-level 7
注意,这条要用-A的方式添加在最下面,使得上面放通的规则被匹配。
此时可以在
代码语言:javascript复制/var/log/syslog
/var/log/message
中找到iptables的日志。
定位问题
发现日志如下:
代码语言:javascript复制Feb 1 16:52:44 localhost kernel: [26544901.701341] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.1.1.1 DST=104.243.28.195 LEN=72 TOS=0x00 PREC=0x00 TTL=59 ID=58349 DF PROTO=UDP SPT=53 DPT=47599 LEN=52
Feb 1 16:52:44 localhost kernel: [26544901.701442] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.1.1.1 DST=104.243.28.195 LEN=140 TOS=0x00 PREC=0x00 TTL=59 ID=58350 DF PROTO=UDP SPT=53 DPT=47599 LEN=120
Feb 1 16:52:49 localhost kernel: [26544906.706491] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.0.0.1 DST=104.243.28.195 LEN=72 TOS=0x00 PREC=0x00 TTL=59 ID=61408 DF PROTO=UDP SPT=53 DPT=57553 LEN=52
Feb 1 16:52:49 localhost kernel: [26544906.706638] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=1.0.0.1 DST=104.243.28.195 LEN=140 TOS=0x00 PREC=0x00 TTL=59 ID=61409 DF PROTO=UDP SPT=53 DPT=57553 LEN=120
和
代码语言:javascript复制Feb 1 16:56:27 localhost kernel: [26545124.797668] IptablesIN=eth0 OUT= MAC=aa:aa:00:12:15:13:30:7c:5e:84:9a:01:08:00 SRC=192.30.255.113 DST=104.243.28.195 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=0 DF PROTO=TCP SPT=22 DPT=51254 WINDOW=65535 RES=0x00 ACK SYN URGP=0
添加规则如下:
代码语言:javascript复制iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --sport 22 -j ACCEPT
iptables -A INPUT -p udp --sport 22 -j ACCEPT
iptables -A INPUT -s 1.1.1.1 -j ACCEPT
iptables -A INPUT -s 1.0.0.1 -j ACCEPT
如果还不行,添加下面规则
代码语言:javascript复制iptables -A INPUT -p tcp -m multiport --dports 22,80,443,3000,9418 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443,3000,9418 -m state --state ESTABLISHED -j ACCEPT
不太理解,为什么git pull git服务器会以22端口向我发入包。不过这么操作后,git pull问题解决。