前言:有的情况下,内网有某个设备可以访问外网,且有独立ipv6地址,而内网有的设备只有ipv4,且无法直接访问外网。我们可以利用有ipv6地址的设备通过socat转发数据到内网ipv4设备,实现它们资源可访问。
1.设置iptables
#设置防火墙,开放444端口
ip6tables -A INPUT -p tcp --dport 444 -j ACCEPT
ip6tables -A OUTPUT -p tcp --dport 444 -j ACCEPT
ip6tables-save > /etc/iptables/rules.v6
2.设置socat
输入:nohup socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444 >/dev/null 2>log &
这段代码可以实现通过访问“[路由器ipv6地址]:444”,达到公网访问“192.168.2.99:444”的目的。
3.socat设置为自动运行
3.1 debian最简单的方法是用cron实现:
crontab -e
输入以下内容:@reboot socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444
nohup什么的都不需要,就可以了
3.2 supervisor监管自启动
- 安装:
apt update; apt install supervisor -y
- 编辑配置文件:
nano /etc/supervisor/conf.d/socat.conf
- 内容如下:
[program:socat]
user=root
command=/usr/bin/socat TCP6-LISTEN:444,reuseaddr,fork TCP4:192.168.2.99:444
autorstart=true
directory=/usr/bin
autorestart=true
startsecs=5
startretries=100
redirect_stderr=true
stdout_logfile=/root/supervisor_log/log.txt
stderr_logfile=/root/supervisor_log/err.txt
- 编辑主配置文件:
nano /etc/supervisor/supervisord.conf
增加如下:
[inet_http_server]
port = 192.168.2.110:9001 #IP和绑定端口
username = root #管理员名称
password = 123456 #管理员密码
重启使配置文件生效:supervisorctl reload
或者supervisorctl update
登录192.168.2.110:9001用设置好的用户和密码登录,能看到进程运行状态。重新启动电脑,发现自启动生效了。
0 条评论