今天,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问题解决。